相关疑难解决方法(0)

将 DBCC CHECKDB 划分为多天

我正在为非常大的数据库实施 Paul Randal 的手动传播 DBCC CHECKDB方法,该方法基本上包括:

  • 将数据库中的表大致平均地划分为 7 个桶
  • 每周运行两次 DBCC CHECKALLOC
  • 每周运行一次 DBCC CHECKCATALOG
  • 一周中的每一天在一个存储桶上运行 DBCC CHECKTABLE

有人用过这个技术吗?有没有现有的脚本?

我担心这实际上可能无法涵盖 CHECKDB 所做的一切;CHECKDB 的联机丛书文档说,除了 CHECKALLOC、CHECKCATALOG 和 CHECKTABLE,它还:

  • 验证数据库中每个索引视图的内容。
  • 使用 FILESTREAM 在文件系统中存储 varbinary(max) 数据时,验证表元数据与文件系统目录和文件之间的链接级一致性。(仅限 SQL 2008)
  • 验证数据库中的 Service Broker 数据。

所以这里是我的问题:

  1. 这些额外的检查是否必要/重要?(我可能更关心索引视图,我认为我们还没有使用 Service Broker 或 FILESTREAM。)

  2. 如果是这样,是否有单独执行这些额外检查的方法?

  3. CHECKALLOC 和 CHECKCATALOG 似乎运行得非常快,即使在大型数据库上也是如此。有什么理由不每天运行这些?

(注意:这将是数百台服务器上数千个现有数据库的标准例程,或者至少是特定大小的每个数据库的标准例程。这意味着像重组所有数据库以使用 CHECKFILEGROUP 这样的选项对我们来说并不实用。)

sql-server dbcc-checkdb vldb

11
推荐指数
2
解决办法
4138
查看次数

标签 统计

dbcc-checkdb ×1

sql-server ×1

vldb ×1