DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS

4 sql-server-2005 sql-server dbcc

我不得不使用 all_errormsgs 运行 dbcc checkdb repair_allow_data_loss,它已经运行了 27 多个小时。DB 大小超过 15gb,服务器(windows 2008)有 32gb 内存。我确实在 SQL 2005 上运行过它,正如我所说,它已经运行了 27 多个小时。这是正常的吗?如果没有,我可以终止它而不会对数据库造成任何问题吗?我在运行之前确实做了备份。

Rem*_*anu 6

我可以终止它而不会对数据库造成任何问题吗

您已经引起了问题,只需运行 repair_ allow_data_loss 即可。在所有其他选项都用尽之后,允许数据丢失确实是最后的手段。适当的操作是从正确的备份中恢复并重新应用丢失的事务。

DBCC 可以需要 27 小时吗?是的,我知道 DBCC 命令需要 8 多天才能完成。您可以调查并查看 DBCC 是否被阻止(Shark 为您提供了正确的方法),如果幸运的话,它被阻止了,您可以取消阻止它并让它完成。但如果正在取得进展,虽然你能做的不多,但等待它

如果你终止它,数据库会比现在更糟吗?理论上不会,因为 DBCC 与任何其他操作一样,是过渡一致的,任何进行中的操作都将回滚。然而,在实践中,您正在运行 DBCC 修复这一事实意味着您正在处理损坏的结构,在这种情况下总是存在风险。

我在运行之前确实做了备份。

通过在不同的机器上或作为同一实例上的不同数据库还原备份来验证备份。如果备份正确,那么您处于一个更好的位置,因为您始终可以返回到此备份。此外,请确保在您进行备份后没有发生新的业务交易。