我正在实施Paul Randal的方法,以针对大型数据库在几天内手动分布DBCC CHECKDB,该方法主要包括:
- 在7个存储桶之间大致平均地划分数据库中的表
- 每周运行一次DBCC CHECKALLOC
- 每周运行一次DBCC CHECKCATALOG
- 每周每天在一个存储桶上运行DBCC CHECKTABLE
有人使用过这种技术吗?有没有现有的脚本?
我担心这可能无法涵盖CHECKDB所做的一切;CHECKDB的联机丛书文档说,除了CHECKALLOC,CHECKCATALOG和CHECKTABLE外,它还:
- 验证数据库中每个索引视图的内容。
- 使用FILESTREAM将varbinary(max)数据存储在文件系统中时,验证表元数据与文件系统目录和文件之间的链接级一致性。(仅适用于SQL 2008)
- 验证数据库中的Service Broker数据。
所以这是我的问题:
这些额外检查是否必要/重要?(索引视图可能与我有关,我认为我们还没有使用Service Broker或FILESTREAM。)
如果是这样,是否有办法分别执行这些附加检查?
CHECKALLOC和CHECKCATALOG似乎运行非常快,即使在大型数据库上也是如此。有什么理由不每天运行这些?
(注意:这将是数百个服务器中成千上万个现有数据库的标准例程,或者至少是一定规模的每个数据库的标准例程。这意味着诸如重组所有数据库以使用CHECKFILEGROUP之类的选项对我们而言并不实际。)