Sql-Server

程序試圖解鎖它不擁有的資源

  • July 1, 2013

SQL Server 2005 SP4 32 位

我有一個每晚執行的 DBCC CHECKDB 作業。昨晚,工作開始後不久,我收到了以下錯誤。數據庫未處於可疑模式,當我現在執行 CHECKDB 時它會恢復正常。該數據庫是完全可訪問的。我應該擔心嗎?我不想在這一點上回到備份。

2013-04-02 02:10:55.53 spid56      Error: 1203, Severity: 20, State: 1.
2013-04-02 02:10:55.53 spid56      Process ID 56 attempted to unlock a resource it
                                   does not own: PAGE: 34:1:388664. Retry the 
                                   transaction, because this error may be caused 
                                   by a timing condition. If the problem persists, 
                                   contact the database administrator.
2013-04-02 02:10:55.58 spid56      Error: 3314, Severity: 17, State: 3.
2013-04-02 02:10:55.58 spid56      During undoing of a logged operation in 
                                   database 'MY_DATABASE_NAME', an error occurred 
                                   at log record ID (1342973:12519:37). Typically, 
                                   the specific failure is logged previously as 
                                   an error in the Windows Event Log service. 
                                   Restore the database or file from a backup, 
                                   or repair the database.

如果這只是一次問題並且 CHECKDB 執行沒有任何錯誤並且您有良好的備份,請不要費心去調查它(除非您想將時間和資源花在不可重現的事情上)。

如果您能夠重現該問題,那麼我建議您

  1. 在測試環境中複製並使用 Profiler 擷取正在發生的事情。
  2. 作為一種主動措施,您可能有一個代理作業或 powershell 作業來掃描錯誤日誌(請注意,您可以在 Powershell 作業中放置一個邏輯,僅從上次結束時開始掃描)以查找特定錯誤,例如 Error: 1203或錯誤:3314,然後觸發SQLDIAG以擷取問題發生時實際發生的情況。

如果您需要任何這樣的腳本,請告訴我,我很樂意分享。

引用自:https://dba.stackexchange.com/questions/39066