当存储出现故障时终止 DBCC CheckDB

当存储出现故障时终止 DBCC CheckDB

我集群的 SAN 上的控制器会定期自行重启。显然可以通过固件更新来修复,但在几天后应用更新之前,我不得不忍受这个问题。问题是,如果其中一个控制器在 DBCC CHECKDB 运行时(夜间维护期间)发生故障,CHECKDB 就会挂起。我似乎无法将其关闭……它显示它一直在等待 ASYNC_IO_COMPLETION。我需要循环实例吗,还是有其他方法可以关闭 CHECKDB?

SQL Server 2005 RTM 和 SP2 实例。

答案1

好的 - 这是正确的行为。发生的事情是,当 DBCC CHECKDB 仍在创建所需的数据库快照时,您已经终止了它。创建快照的一部分是在正在检查的数据库上运行崩溃恢复,但进入数据库快照的上下文。崩溃恢复无法停止,并且无法终止正在运行它的 spid。因此 - 您唯一的选择是等待它完成,或者循环实例 - 这将删除快照。当我将 CHECKDB 更改为使用数据库快照时,我们知道这将是一个潜在的问题,但没有其他选择。

请参阅这篇博客文章,其中我做了更多解释:DBCC CHECKDB 运行时事务是否会回滚?

干杯

答案2

当您说似乎无法终止它时,您是在尝试取消该作业吗?还是您正在从活动监视器中终止 SPID?

相关内容