Czy istnieje sposób na wyświetlenie otwartych transakcji w bazie danych programu SQL Server 2000?

100

Czy ktoś zna sposób na wyświetlenie otwartych transakcji w bazie danych SQL Server 2000?

Zdaję sobie sprawę, że mogę odpytywać widok sys.dm_tran_session_transactionsw wersjach bazy danych SQL 2005 (i nowszych), jednak nie jest to dostępne w SQL 2000.

James Wiseman
źródło

Odpowiedzi:

157

Dla wszystkich baz danych zapytaj sys.sysprocesses

SELECT * FROM sys.sysprocesses WHERE open_tran = 1

Do bieżącej bazy danych użyj:

DBCC OPENTRAN
gbn
źródło
34

Możesz uzyskać wszystkie informacje o aktywnej transakcji za pomocą poniższego zapytania

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

i da poniżej podobny wynik wprowadź opis obrazu tutaj

i zamykasz tę transakcję za pomocą pomocy poniżej zapytania KILL , odsyłając identyfikator sesji

KILL 77
Rinoy Ashokan
źródło
Wow, ten jest bardzo fajny, podoba mi się ilość dostarczonych danych, jedyną wadą jest to, że musisz być administratorem, aby go uruchomić, DBCC OPENTRAN potrzebuje mniej uprawnień. Ale nadal ... bardzo dobrze
Yogurtu,
Bardzo przydatne, dziękuję! Jeśli odpowiedział na pytanie PO (SQL 2000), to powinna być zaakceptowana. Głos za przyjęciem ...
Reversed Engineer
Świetnie, dostałem to, czego chciałem.
Vipul
23

DBCC OPENTRAN pomaga zidentyfikować aktywne transakcje, które mogą zapobiegać obcinaniu dziennika. DBCC OPENTRAN wyświetla informacje o najstarszej aktywnej transakcji i najstarszych rozproszonych i nierozproszonych zreplikowanych transakcjach, jeśli istnieją, w dzienniku transakcji określonej bazy danych. Wyniki są wyświetlane tylko wtedy, gdy w dzienniku istnieje aktywna transakcja lub gdy baza danych zawiera informacje o replikacji.

Jeśli w dzienniku nie ma aktywnych transakcji, wyświetlany jest komunikat informacyjny.

DBCC OPENTRAN

codingbadger
źródło
0

Użyj tego, ponieważ zawsze, gdy transakcja otwiera więcej niż jedną transakcję, to poniżej zadziała SELECT * FROM sys.sysprocesses WHERE open_tran <> 0

kanti
źródło