Sql-Server
將 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 數據。
所以這是我的問題:
- 這些額外的檢查是否必要/重要?(索引視圖可能對我來說更重要,我認為我們還沒有使用 Service Broker 或 FILESTREAM。)
- 如果是這樣,有沒有辦法單獨執行這些額外的檢查?
- CHECKALLOC 和 CHECKCATALOG 似乎執行得非常快,即使在大型數據庫上也是如此。有什麼理由不每天執行這些?
(注意:這將是數百台伺服器上數千個現有數據庫的標準常式,或者至少是超過一定大小的每個數據庫。這意味著重組所有數據庫以使用 CHECKFILEGROUP 等選項對我們來說並不實際。)
這些額外的檢查是否必要/重要?(索引視圖可能對我來說更重要,我認為我們還沒有使用 Service Broker 或 FILESTREAM。)
您可以
DBCC CHECKTABLE WITH EXTENDED_LOGICAL_CHECKS
直接在索引視圖上執行。在某些情況下檢查索引視圖可能會出現問題,因此請準備好調查導致的任何誤報。(Paul Randal 在對引用文章的評論中還提到,假陰性也是可能的,但我對此沒有直接經驗。)如果是這樣,有沒有辦法單獨執行這些額外的檢查?
不支持
FILESTREAM
單獨執行 Service Broker 或檢查,不。
CHECKALLOC
並且CHECKCATALOG
似乎執行得非常快,即使在大型數據庫上也是如此。有什麼理由不每天執行這些?不是我知道的。
你也可以考慮跑步
DBCC CHECKCONSTRAINTS
。無論您指定任何選項,此檢查都不包含在 中。如果情況允許,DBCC CHECKDB
您可能還想考慮偶爾跑步。CHECKDB