web-dev-qa-db-fra.com

Existe-t-il un moyen de répertorier les transactions en cours sur la base de données SQL Server 2000?

Est-ce que quelqu'un connaît un moyen de répertorier les transactions ouvertes sur la base de données SQL Server 2000?

Je suis conscient que je peux interroger la vue sys.dm_tran_session_transactions sur les versions de base de données SQL 2005 (et versions ultérieures), cependant, ceci n'est pas disponible sur SQL 2000.

90
James Wiseman

Pour toutes les bases de données, interrogez sys.sysprocesses.

SELECT * FROM sys.sysprocesses WHERE open_tran = 1

Pour la base de données actuelle, utilisez:

DBCC OPENTRAN
134
gbn

DBCC OPENTRAN permet d’identifier les transactions actives susceptibles d’empêcher la troncation des journaux. DBCC OPENTRAN affiche des informations sur la transaction active la plus ancienne et les transactions répliquées distribuées et non distribuées les plus anciennes, le cas échéant, dans le journal des transactions de la base de données spécifiée. Les résultats ne sont affichés que s'il existe une transaction active dans le journal ou si la base de données contient des informations de réplication.

Un message d'information est affiché s'il n'y a pas de transaction active dans le journal.

DBCC OPENTRAN

22
codingbadger

Vous pouvez obtenir toutes les informations de transaction active à l'aide de la requête ci-dessous

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

et il donnera ci-dessous un résultat similaire enter image description here

et vous fermez cette transaction à l'aide de l'aide ci-dessous [~ # ~] tuer [~ # ~] requête en faisant référence à l'identifiant de session

KILL 77
17
Rinoy Ashokan