进程试图解锁不属于它的资源

Som*_*Guy 5 sql-server-2005 sql-server backup maintenance errors

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.
Run Code Online (Sandbox Code Playgroud)

Kin*_*hah 2

如果这只是一次性问题,并且 CHECKDB 运行时没有任何错误,并且您有良好的备份,则不必费心去调查它(除非您想花费时间和资源来处理不可重现的问题)。

如果您能够重现该问题,那么我建议您

  1. 在测试环境中进行复制并使用探查器捕获正在发生的情况。
  2. 作为主动措施,您可能可以使用代理作业或 powershell 作业来扫描错误日志(请注意,您可以在 Powershell 作业中放置一个逻辑,仅从上次结束时开始扫描)以查找特定错误,例如 Error: 1203或错误:3314,然后触发SQLDIAG以捕获问题发生时实际发生的情况。

如果您需要任何此类脚本,请告诉我,我将很乐意分享。