SQL Server:CheckDB 在一个数据库上运行得足够快,但在另一个数据库上运行得非常慢

SQL Server:CheckDB 在一个数据库上运行得足够快,但在另一个数据库上运行得非常慢

这个是给你的,保罗!:-)

我有一个客户,他在两个办公地点都拥有两个数据库。两个数据库的大小大致相同(大约 10 GB),都托管在同一个专业托管商的网站上 - 所以大致来说,它们是相同的。

然而,数据库 ACheck database integrity在不到 30 分钟的时间内就完成了维护计划中的步骤,而数据库 B 甚至从未完成 - DBA 在运行 3 个多小时后终止了该进程。

这些步骤是在“下班后”运行的 - 因此服务器上不应该有任何重大活动。

有什么解释吗?知道要检查什么或在哪里查找原因(以及解决方法)吗?没有报告任何错误或任何东西.....

答案1

DBCC CHECKDB 不运行数据库检查。它实际上是一组用于验证数据库不同方面的命令。相关部分来自 BOL

在数据库上运行 DBCC CHECKALLOC。在数据库中的每个表和视图上运行 DBCC CHECKTABLE。在数据库上运行 DBCC CHECKCATALOG。

如果一个数据库需要 30 分钟,而另一个数据库需要 3 小时以上,则很可能是 CHECKTABLE 命令。特别是如果数据库的大小差别很大。

答案2

抱歉,请在慢速数据库上运行检查数据库完整性并让它完成。它可能会发现问题并开始深入研究细节 - 这比在正常数据库上运行花费的时间要多得多。

可能从命令行执行序列来检查数据库;)DBCC CHECKDB 有一些输出可能会对您有所帮助;)维护计划有点难以调试。

相关内容