DBCC OPENTRAN (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Hjälper till att identifiera aktiva transaktioner som kan förhindra loggtrunkering. DBCC OPENTRAN visar information om den äldsta aktiva transaktionen och de äldsta distribuerade och icke-distribuerade replikerade transaktionerna, om några, i transaktionsloggen för den angivna databasen. Resultat visas endast om det finns en aktiv transaktion i loggen eller om databasen innehåller replikeringsinformation. Ett informationsmeddelande visas om det inte finns några aktiva transaktioner i loggen.

Anmärkning

DBCC OPENTRAN stöds inte för icke-SQL Server-utgivare.

Transact-SQL syntaxkonventioner

Syntax

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

Arguments

| database_namedatabase_id | 0

Namnet eller ID:t på databasen för vilken den äldsta transaktionsinformationen ska visas. Om det inte anges, eller om 0 anges, används den aktuella databasen. Databasnamn måste följa reglerna för identifierare.

TABELLRESULTAT

Specificerar resultaten i ett tabellformat som kan laddas in i en tabell. Använd detta alternativ för att skapa en resultattabell som kan infogas i en tabell för jämförelser. När detta alternativ inte specificeras formateras resultaten för läsbarhet.

NO_INFOMSGS

Undertrycker alla informationsmeddelanden.

Anmärkningar

Använd DBCC OPENTRAN för att avgöra om en öppen transaktion finns i transaktionsloggen. När du använder satsen BACKUP LOG kan endast den inaktiva delen av loggen trunkeras; en öppen transaktion kan förhindra att loggen avskärs helt. För att identifiera en öppen transaktion, använd sp_who för att hämta sessions-ID:t.

Resultatuppsättningar

DBCC OPENTRAN returnerar följande resultatmängd när inga öppna transaktioner finns:

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

Permissions

Kräver medlemskap i sysadmin fast serverroll eller db_owner fast databasroll.

Examples

A. Returnera den äldsta aktiva transaktionen

Följande exempel erhåller transaktionsinformation för den aktuella databasen. Resultaten kan variera.

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

Här är resultatet.

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.

Anmärkning

Resultatet "UID (användar-ID)" är meningslöst och kommer att tas bort i en framtida version av SQL Server.

B. Ange alternativet MED TABLERESULTS.

Följande exempel laddar in kommandots DBCC OPENTRAN resultat i en tillfällig tabell.

-- 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