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.

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

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

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


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.