2009-01-15 180 views
8

我在生產環境中的應用程序的2頁上收到此錯誤的頻率非常高,但不一致。我只是在下面的錯誤屏幕截圖。SQL Server 2005:事務死鎖

事務(進程ID XX)在鎖定時死鎖了|通信緩衝區資源與另一個進程並且被選爲死鎖受害者。重新運行交易。

解決這個錯誤的方法是什麼。該數據庫服務器是SQL Server 2005.

回答

3

這是由布拉德麥奇的article是一個很好的開始。

1

的錯誤信息提示你可以做的,讓程序重試事務!

很大程度上取決於交易是如何「原子」的!也就是說,如果你死鎖了,它的某些其他進程已經成功更新了你感興趣的行。在異常情況下將更新應用到行是否仍然有意義?

最起碼有一個更好的錯誤信息呈現給用戶(「其他用戶更改您試圖更新XXXX,請再檢查新值和嘗試。)

2

你需要運行一個死鎖我們需要確定兩個有問題的進程,然後查看兩頁中的代碼,看看哪些SQL命令正在發佈以及發生多少次。的時候,我發現簡單地回顧一下正在運行的SQL代碼並知道它運行的頻率會很快找出衝突。修復它有時需要更長的時間...