Gibt es eine Möglichkeit, offene Transaktionen in der SQL Server 2000-Datenbank aufzulisten?

100

Kennt jemand eine Möglichkeit, offene Transaktionen in der SQL Server 2000-Datenbank aufzulisten?

Mir ist bekannt, dass ich die Ansicht sys.dm_tran_session_transactionsin SQL 2005-Datenbankversionen (und höher) abfragen kann , dies ist jedoch in SQL 2000 nicht verfügbar.

James Wiseman
quelle

Antworten:

155

Fragen Sie für alle Datenbanken sys.sysprocesses ab

SELECT * FROM sys.sysprocesses WHERE open_tran = 1

Für die aktuelle Datenbank verwenden Sie:

DBCC OPENTRAN
gbn
quelle
34

Sie können alle Informationen der aktiven Transaktion mithilfe der folgenden Abfrage abrufen

SELECT
trans.session_id AS [SESSION ID],
ESes.host_name AS [HOST NAME],login_name AS [Login NAME],
trans.transaction_id AS [TRANSACTION ID],
tas.name AS [TRANSACTION NAME],tas.transaction_begin_time AS [TRANSACTION 
BEGIN TIME],
tds.database_id AS [DATABASE ID],DBs.name AS [DATABASE NAME]
FROM sys.dm_tran_active_transactions tas
JOIN sys.dm_tran_session_transactions trans
ON (trans.transaction_id=tas.transaction_id)
LEFT OUTER JOIN sys.dm_tran_database_transactions tds
ON (tas.transaction_id = tds.transaction_id )
LEFT OUTER JOIN sys.databases AS DBs
ON tds.database_id = DBs.database_id
LEFT OUTER JOIN sys.dm_exec_sessions AS ESes
ON trans.session_id = ESes.session_id
WHERE ESes.session_id IS NOT NULL

und es wird unten ein ähnliches Ergebnis geben Geben Sie hier die Bildbeschreibung ein

und Sie schließen diese Transaktion mit der Hilfe unter KILL- Abfrage, indem Sie auf die Sitzungs-ID verweisen

KILL 77
Rinoy Ashokan
quelle
Wow, dieser ist sehr schön, ich mag die Menge der bereitgestellten Daten. Der einzige Nachteil ist, dass Sie Administrator sein müssen, um ihn auszuführen. DBCC OPENTRAN benötigt weniger Berechtigungen. Aber immer noch ... sehr gut
Yogurtu
Sehr nützlich, danke! Wenn es die Frage des OP (SQL 2000) beantwortet hat, sollte es die akzeptierte Antwort gewesen sein. Haben Sie eine Gegenstimme ...
Umgekehrter Ingenieur
Super, habe was ich wollte.
Vipul
23

DBCC OPENTRAN hilft bei der Identifizierung aktiver Transaktionen, die möglicherweise das Abschneiden von Protokollen verhindern. DBCC OPENTRAN zeigt Informationen über die älteste aktive Transaktion und die ältesten verteilten und nicht verteilten replizierten Transaktionen, falls vorhanden, im Transaktionsprotokoll der angegebenen Datenbank an. Ergebnisse werden nur angezeigt, wenn im Protokoll eine aktive Transaktion vorhanden ist oder wenn die Datenbank Replikationsinformationen enthält.

Eine Informationsmeldung wird angezeigt, wenn das Protokoll keine aktiven Transaktionen enthält.

DBCC OPENTRAN

Codierungsbadger
quelle
0

Verwenden Sie diese Option, da immer dann, wenn eine Transaktion mehr als eine Transaktion öffnet, SELECT * FROM sys.sysprocesses WHERE open_tran <> 0 funktioniert

Kanti
quelle