Freigeben über


DBCC OPENTRAN (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance

So können aktive Transaktionen identifiziert werden, die die Protokollkürzung möglicherweise verhindern. DBCC OPENTRAN zeigt Informationen zur ältesten aktiven Transaktion sowie zu den ältesten verteilten und nicht verteilten replizierten Transaktionen (sofern vorhanden) im Transaktionsprotokoll der angegebenen Datenbank an. Ergebnisse werden nur angezeigt, wenn im Protokoll eine aktive Transaktion vorhanden ist oder die Datenbank Replikationsinformationen enthält. Wenn keine aktiven Transaktionen im Protokoll enthalten sind, wird eine Informationsmeldung angezeigt.

Hinweis

DBCC OPENTRAN wird für Nicht-SQL Server-Verleger nicht unterstützt.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

database_name | database_id | 0

Der Name oder die ID der Datenbank, für die Informationen zur ältesten Transaktion angezeigt werden sollen. Wird kein Wert oder der Wert 0 angegeben, wird die aktuelle Datenbank verwendet. Datenbanknamen müssen den Regeln für Bezeichner entsprechen.

TABLERESULTS

Gibt die Ergebnisse, die in eine Tabelle geladen werden können, im Tabellenformat an. Verwenden Sie diese Option, um eine Tabelle mit Ergebniswerten zu erhalten, die zum Durchführen von Vergleichen in eine Tabelle eingefügt werden können. Wenn diese Option nicht angegeben ist, werden die Ergebnisse zwecks besserer Lesbarkeit formatiert.

NO_INFOMSGS

Alle Informationsmeldungen werden unterdrückt.

Bemerkungen

Verwenden Sie DBCC OPENTRAN, um zu ermitteln, ob eine offene Transaktion innerhalb des Transaktionsprotokolls vorhanden ist. Wenn Sie die BACKUP LOG-Anweisung verwenden, kann nur der inaktive Teil des Protokolls abgeschnitten werden. Eine offene Transaktion kann verhindern, dass das Protokoll vollständig abgeschnitten wird. Zum Identifizieren einer geöffneten Transaktion können Sie mit sp_who die Systemprozess-ID abrufen.

Resultsets

DBCC OPENTRAN gibt folgendes Resultset zurück, wenn keine offenen Transaktionen vorhanden sind:

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

Berechtigungen

Erfordert die Mitgliedschaft in der festen Serverrolle sysadmin oder der festen Datenbankrolle db_owner .

Beispiele

A. Zurückgeben der ältesten aktiven Transaktion

Im folgenden Beispiel werden Transaktionsinformationen für die aktuelle Datenbank abgerufen. Die Ergebnisse können variieren.

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

Hier sehen Sie das Ergebnis.

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.

Hinweis

Das Ergebnis für „UID (user ID)“ hat keine Bedeutung und wird in einer zukünftigen Version von SQL Server entfernt.

B. Angeben der WITH TABLERESULTS-Option

Im folgenden Beispiel werden die Ergebnisse des DBCC OPENTRAN-Befehls in eine temporäre Tabelle geladen.

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