2011-10-27 61 views

回答

9

Unresearched /未經但類似

SELECT at.transaction_id, 
     at.transaction_begin_time, 
     st.session_id 
FROM sys.dm_tran_active_transactions at 
LEFT JOIN sys.dm_tran_session_transactions st 
    ON at.transaction_id = st.transaction_id 
ORDER BY transaction_begin_time 

+0

你和[皮納爾的做法(http://stackoverflow.com/questions/7916210/how-to-identify-and-kill -longest-running-transaction/7916316#7916316)給出不同的結果。您的查詢當前列出了22個交易,其中session_id = NULL,而Pinals僅顯示該查詢本身的交易(Session_Id = 57)。爲什麼? –

+1

@TimSchmelter - 因爲我的查詢列出了問題中指定的**交易**(包括內部系統的交易),而Pinal目前正在執行可能參與或可能不參與交易的陳述。如果你的報告查詢只是做一個'select'查看事務是不會有幫助的。 –

+8

@Tim Schmelter:Pinal網站中的「權威」一詞應被視爲某種形式的幽默,而不是實際的「權威」。 – gbn

4

在SQL Server Management Studio中,通過右擊工作數據庫 - >報告 - >所有交易,您可以找到持續交易的ID。 確定交易的ID後,您應該做的就是創建一個新的查詢,並運行下面的查詢「殺[TRANSACTIONID]」 即:kill 96

+0

嗯,這個數據庫中目前沒有打開的事務。雖然我的報告同時停止,但我不知道爲什麼沒有其他活動事務,因爲至少有一個Web應用程序正在使用這個數據庫。不管怎麼說,還是要謝謝你。 –