DBCC OPENTRAN;
輸出關鍵資訊:
SELECT session_id, transaction_id, is_user_transaction, is_local
FROM sys.dm_tran_session_transactions
WHERE is_user_transaction = 1;
SELECT s.text
FROM sys.dm_exec_connections c
CROSS APPLY sys.dm_exec_sql_text(c.most_recent_sql_handle) s
WHERE c.session_id = 54; -- 替換實際 SPID
SELECT
transaction_begin_time,
CASE transaction_type
WHEN 1 THEN 'Read/Write'
WHEN 2 THEN 'Read-Only'
WHEN 3 THEN 'System'
WHEN 4 THEN 'Distributed'
END AS tran_type,
CASE transaction_state
WHEN 0 THEN 'Not initialized'
WHEN 1 THEN 'Initialized not started'
WHEN 2 THEN 'Active'
WHEN 3 THEN 'Ended (read-only)'
WHEN 4 THEN 'Commit initiated'
WHEN 5 THEN 'Prepared'
WHEN 6 THEN 'Committed'
WHEN 7 THEN 'Rolling back'
WHEN 8 THEN 'Rolled back'
END AS tran_state
FROM sys.dm_tran_active_transactions
WHERE transaction_id = 489743; -- 替換實際 transaction_id
DBCC OPENTRAN 獲取最早活動事務 SPIDsys.dm_tran_session_transactions 映射 SPID → transaction_idsys.dm_exec_connections + dm_exec_sql_text 取得最後執行 SQLsys.dm_tran_active_transactions 確認事務類型、狀態、持續時間COMMIT/ROLLBACK、邏輯死循環、長時間外部呼叫KILL spid 強制回滾(謹慎操作,評估業務影響)SET LOCK_TIMEOUT / SET QUERY_GOVERNOR_COST_LIMITsys.dm_tran_active_transactions 持續時間 > 閾值發警