2011-03-10 23 views
0

我只是調試這個錯誤,當我向表格寫一行時突然出現這個錯誤。如果我創建一個TransactionScope,如果我在調試時停止它,是否有機會阻止數據庫?

超時已過期。在完成 操作或服務器不是 響應之前已經過去了超時期限 。該聲明已被終止 。

它與交易範圍有關嗎?我在想,如果我創建一個事務範圍,並且通過調試,並且在調試過程中在達到trasnaction範圍的末尾之前停止了應用程序 - 是否有機會阻止數據庫?

如果是這樣,我該如何解鎖它?

注 - 這可能會幫助,現在,我無法插入表中的行,但有訪問和更新現有的行

更新 - 嗯,我重置SQL Server服務,它似乎已經完成了招。儘管如此,我還是很好奇聽到它是如何鎖定在第一位的 - 我不希望我的代碼的某些部分在製作中發生這種情況。

回答

1

如果打開一個數據庫事務會鎖定整個數據庫,那將會非常令人失望。一般來說,SQL Server以每行爲基礎進行鎖定,然後根據需要升級這些鎖(我在此簡化了大量重要事項)。

每個事務都有一個超時給它完成。如果這段時間過去了,而你又沒有提交或回滾,那麼你會得到「Timeout expired」異常。

就「暢通」而言,您通常不必擔心。關閉連接後,所有內容都會解鎖。

+0

但是如果我在使用transactionscope結束之前停止應用程序,它會自動關閉連接嗎? – Diskdrive 2011-03-10 22:22:15

相關問題