Czy istnieje sposób na listę otwartych transakcji w bazie danych SQL Server 2000?

Czy ktoś zna jakiś sposób na listę otwartych transakcji w bazie danych SQL Server 2000?

Jestem świadomy, że mogę odpytywać widok sys.dm_tran_session_transactions w wersjach baz danych SQL 2005 (i późniejszych), jednak nie jest to dostępne w SQL 2000.

Author: James Wiseman, 2010-12-15

3 answers

Dla wszystkich baz danych sys.sysprocesses

SELECT * FROM sys.sysprocesses WHERE open_tran = 1

Do bieżącego użycia bazy danych:

DBCC OPENTRAN
 117
Author: gbn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-24 05:47:23

DBCC OPENTRAN pomaga zidentyfikować aktywne transakcje, które mogą uniemożliwiać obcinanie logów. DBCC OPENTRAN wyświetla informacje o najstarszej aktywnej transakcji oraz najstarszych rozproszonych i niepodzielonych replikowanych transakcjach, jeśli takie 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.

Wyświetlany jest komunikat informacyjny jeśli w dzienniku nie ma aktywnych transakcji.

DBCC OPENTRAN

 20
Author: codingbadger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-12 07:18:54

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 Tutaj wpisz opis obrazka

I zamykasz tę transakcję za pomocą poniższej pomocy Zabij zapytanie, odwołując się do identyfikatora sesji

KILL 77
 11
Author: Rinoy Ashokan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-08 12:20:39