我正在研究实施Paul Randal的手动分散DBCC CHECKDB至数天方法,用于非常大的数据库,基本上包括:
- 在数据库中将表大致均匀地分成7个桶
- 每周运行两次DBCC CHECKALLOC
- 每周运行一次DBCC CHECKCATALOG
- 每天运行一个桶的DBCC CHECKTABLE
有人使用过这种技术吗?是否有现有的脚本可用?
我担心这可能实际上没有覆盖CHECKDB的所有内容;CHECKDB的Books Online文档还提到,除了CHECKALLOC、CHECKCATALOG和CHECKTABLE之外,它还包括:
验证数据库中每个索引视图的内容。 在使用FILESTREAM将varbinary(max)数据存储在文件系统中时,验证表元数据和文件系统目录和文件之间的链接级一致性。(仅适用于SQL 2008) 验证数据库中的服务代理数据。 所以这里是我的问题: 这些额外的检查是否必要/重要?(对我来说,索引视图可能更令人担忧,我认为我们还没有使用服务代理或FILESTREAM。) 如果是这样,有没有办法单独执行这些额外的检查? CHECKALLOC和CHECKCATALOG似乎在大型数据库上运行非常快。不运行这些检查的原因是什么? (注意:这将成为数千个现有数据库跨数百个服务器的标准例程,或者至少是每个特定大小的数据库。这意味着像重新构建所有数据库以使用CHECKFILEGROUP这样的选项对我们来说并不实际。)