Udostępnij za pośrednictwem


DBCC OPENTRAN (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Pomaga zidentyfikować aktywne transakcje, które mogą uniemożliwiać obcięcie dziennika. DBCC OPENTRAN wyświetla informacje o najstarszej aktywnej transakcji oraz najstarszych transakcji rozproszonych i niedystrybucyjnych replikowanych, jeśli istnieją, w dzienniku transakcji określonej bazy danych. Wyniki są wyświetlane tylko wtedy, gdy istnieje aktywna transakcja, która istnieje w dzienniku lub jeśli baza danych zawiera informacje o replikacji. Komunikat informacyjny jest wyświetlany, jeśli w dzienniku nie ma aktywnych transakcji.

Nuta

DBCC OPENTRAN nie jest obsługiwana w przypadku wydawców programu SQL Server.

Transact-SQL konwencje składni

Składnia

DBCC OPENTRAN
[
    ( [ database_name | database_id | 0 ] )
    { [ WITH TABLERESULTS ]
      [ , [ NO_INFOMSGS ] ]
    }
]

Argumenty

database_name | database_id | 0

Nazwa lub identyfikator bazy danych, dla której mają być wyświetlane najstarsze informacje o transakcji. Jeśli nie określono wartości lub jeśli określono wartość 0, używana jest bieżąca baza danych. Nazwy baz danych muszą być zgodne z regułami dotyczącymi identyfikatorów .

TABLERESULTS

Określa wyniki w formacie tabelarycznym, który można załadować do tabeli. Użyj tej opcji, aby utworzyć tabelę wyników, którą można wstawić do tabeli na potrzeby porównań. Jeśli ta opcja nie zostanie określona, wyniki są sformatowane w celu zapewnienia czytelności.

NO_INFOMSGS

Pomija wszystkie komunikaty informacyjne.

Uwagi

Użyj DBCC OPENTRAN, aby określić, czy w dzienniku transakcji istnieje otwarta transakcja. Jeśli używasz instrukcji BACKUP LOG, można obcinać tylko nieaktywną część dziennika; otwarta transakcja może uniemożliwić całkowite obcięcie dziennika. Aby zidentyfikować otwartą transakcję, użyj sp_who, aby uzyskać identyfikator procesu systemu.

Zestawy wyników

DBCC OPENTRAN zwraca następujący zestaw wyników, gdy nie ma otwartych transakcji:

No active open transactions.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Uprawnienia

Wymaga członkostwa w sysadmin stałej roli serwera lub stałej roli bazy danych db_owner.

Przykłady

A. Zwraca najstarszą aktywną transakcję

Poniższy przykład uzyskuje informacje o transakcji dla bieżącej bazy danych. Wyniki mogą się różnić.

CREATE TABLE T1(Col1 INT, Col2 CHAR(3));
GO
BEGIN TRAN
INSERT INTO T1 VALUES (101, 'abc');
GO
DBCC OPENTRAN;
ROLLBACK TRAN;
GO
DROP TABLE T1;
GO

Oto zestaw wyników.

Transaction information for database 'master'.
Oldest active transaction:
SPID (server process ID) : 52
UID (user ID) : -1
Name          : user_transaction
LSN           : (518:1576:1)
Start time    : Jun  1 2004  3:30:07:197PM
SID           : 0x010500000000000515000000a065cf7e784b9b5fe77c87709e611500
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Nuta

Wynik "UID (identyfikator użytkownika)" jest bez znaczenia i zostanie usunięty w przyszłej wersji programu SQL Server.

B. Określ opcję WITH TABLERESULTS

Poniższy przykład ładuje wyniki polecenia DBCC OPENTRAN do tabeli tymczasowej.

-- Create the temporary table to accept the results.
CREATE TABLE #OpenTranStatus (
   ActiveTransaction VARCHAR(25),
   Details sql_variant
   );
-- Execute the command, putting the results in the table.
INSERT INTO #OpenTranStatus
   EXEC ('DBCC OPENTRAN WITH TABLERESULTS, NO_INFOMSGS');
  
-- Display the results.
SELECT * FROM #OpenTranStatus;
GO