2010-12-01 46 views
1

我在我們的應用程序創建的數據庫服務器上面臨一些鎖。我不明白的是Sleeping的一個流程是如何進行一個開放式交易的(流程71是創建Lock的流程)。怎樣纔能有一個正在睡眠掛起事務的SQL連接?

據我所知,當一個進程完成時,它會關閉所有打開的事務。這是否恰當?

在預先感謝隊友。

alt text

+0

看到最後一個字段,您會看到「Open Tran(sactions)」設置爲1. – 2010-12-01 13:59:33

回答

2

據我知道,當 完成這一個過程中關閉所有打開的 交易。是對的嗎?

不。如果您明確地打開了一個交易,您必須明確地指定commitrollback。在此之前,事務保持打開狀態,因此完全有可能使連接閒置(目前不處理任何任務),但仍有未提交的事務。

很多人想到的是一個錯誤會自動回滾事務,但事實並非如此,除非你有

set xact_abort on 
+0

如果進程意外掛起或終止,該怎麼辦?交易永遠在那裏? – 2010-12-01 13:56:39

0

據我知道,當 完成這一個過程中關閉所有打開的 交易。這是否恰當?

是的。但它不能保證,你不應該依賴它。您必須明確關閉連接。