dataiotech Labs
Scripts Library/sqlserver/#49
Script #49
sqlserver
Lockingread-onlyMin Version: 2012

Find Long-Open Transactions in SQL Server

Lists long-open transactions with their owners. Detects those blocking log truncation and holding locks.

#transaction#dbcc-opentran#log-reuse
sqlserver · sql
SELECT s.session_id, s.login_name, s.host_name, s.status,
       DB_NAME(t.database_id) AS db_name,
       at.transaction_begin_time,
       DATEDIFF(MINUTE, at.transaction_begin_time, GETDATE()) AS open_minutes,
       st.text AS last_sql
FROM sys.dm_tran_session_transactions t
JOIN sys.dm_tran_active_transactions at ON at.transaction_id = t.transaction_id
JOIN sys.dm_exec_sessions s ON s.session_id = t.session_id
LEFT JOIN sys.dm_exec_connections c ON c.session_id = s.session_id
OUTER APPLY sys.dm_exec_sql_text(c.most_recent_sql_handle) st
WHERE t.session_id <> @@SPID
ORDER BY at.transaction_begin_time;
Operational Notes & Remediation Guidance

Verify in a staging environment prior to running in production. This is a read-only diagnostic query; it does not acquire exclusive locks.

Production Safety & Execution Standards
  • This script is designed for read-only diagnostics; it does not alter schema or modify data directly.
  • Prior to executing on production systems under high load, verify the target database version (Min. Version: 2012).
  • Exercise caution with mutating actions (e.g., terminating sessions or dropping indexes) referenced in the notes section.

Engineering Triad: Related Runbooks & Incident Response

Which production incidents and emergency drills execute this script as a diagnosis step?

Runbook Library (63)
Related Alerts & Metrics
M28SQL Server Blocked ProcessesSQL Server
M30SQL Server Transaction Log UsageSQL Server
M34SQL Server TempDB Free SpaceSQL Server