web-dev-qa-db-ja.com

プロセスが所有していないリソースをロック解除しようとしました

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.
5
SomeGuy

これが1回限りの問題で、CHECKDBがエラーなしで実行され、適切なバックアップがある場合は、わざわざ調査しないでください(再現性のないものに時間とリソースを費やしたくない場合を除く)。

問題を再現できる場合は、

  1. テスト環境で複製し、プロファイラーを使用して何が起こっているかをキャプチャします。
  2. 事前対策として、エラーログをスキャンするエージェントジョブまたはPowerShellジョブを使用することができます(Powershellジョブ内にロジックを配置して、最後に終了したときからのみスキャンすることができます)。エラー:1203などの特定のエラーを探すことができます。またはエラー:3314その後、[〜#〜] sqldiag [〜#〜]を実行して、問題が発生したときに実際に何が起こっていたかをキャプチャします。

このようなスクリプトが必要な場合はお知らせください。喜んで共有させていただきます。

2
Kin Shah