Quelqu'un connaît-il la commande pour vérifier s'il existe une transaction non validée dans SQL Server 2005?
utilisez @@ trancount ou sys.dm_tran_active_transactions DMV dans SQL 2005, 2008
XACT_STATE () signale l'état de transaction d'une session, indiquant si la session a ou non une transaction active, et si la transaction peut ou non être validée. Il renvoie trois valeurs:
@@ TRANCOUNT Renvoie le nombre de transactions actives pour la connexion actuelle.
courir
DBCC OPENTRAN
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
--Le nom DB n'obtiendra que lorsqu'une commande SELECT @@ TRANCOUNT s'exécutera.
exécuter le code ci-dessus ... Donnera les détails de la session dans laquelle la transaction se produit ..
Pour résumer, il existe plusieurs méthodes:
sp_who2 sp_lock