जैसा कि कई लोग पहले ही इंगित कर चुके हैं, आमतौर पर एक लंबे समय तक चलने वाला लेन-देन होता है, जो ज्यादातर मेरे द्वारा इस्तेमाल किए गए SET IMPLICIT TRANSACTIONS को मिस करता है, जिसका इस्तेमाल बिल्कुल भी नहीं किया जाना चाहिए। यह देखने के लिए कि ब्रेंट ओजर के अंतर्दृष्टि लेख की जांच क्यों करें
वैसे भी, आप निम्नलिखित क्वेरी का उपयोग करके लंबे समय तक चलने वाले लंबित लेनदेन की सूची प्राप्त कर सकते हैं।
SELECT
[s_tst].[session_id],
[s_es].[login_name] AS [Login Name],
DB_NAME (s_tdt.database_id) AS [Database],
[s_tdt].[database_transaction_begin_time] AS [Begin Time],
[s_tdt].[database_transaction_log_bytes_used] AS [Log Bytes],
[s_tdt].[database_transaction_log_bytes_reserved] AS [Log Rsvd],
[s_est].text AS [Last T-SQL Text],
[s_eqp].[query_plan] AS [Last Plan]
FROM
sys.dm_tran_database_transactions [s_tdt]
JOIN
sys.dm_tran_session_transactions [s_tst]
ON
[s_tst].[transaction_id] = [s_tdt].[transaction_id]
JOIN
sys.[dm_exec_sessions] [s_es]
ON
[s_es].[session_id] = [s_tst].[session_id]
JOIN
sys.dm_exec_connections [s_ec]
ON
[s_ec].[session_id] = [s_tst].[session_id]
LEFT OUTER JOIN
sys.dm_exec_requests [s_er]
ON
[s_er].[session_id] = [s_tst].[session_id]
CROSS APPLY
sys.dm_exec_sql_text ([s_ec].[most_recent_sql_handle]) AS [s_est]
OUTER APPLY
sys.dm_exec_query_plan ([s_er].[plan_handle]) AS [s_eqp]
where [s_tdt].[database_transaction_begin_time] is not null
ORDER BY
[Begin Time] ASC;
https://www.brentozar.com/archive/2018/02/set-implicit_transactions-one-hell-bad-idea/