DBCC CHECKDB 發現大量一致性錯誤(如訊息 2508:頁計數不正確),逐表執行 DBCC UPDATEUSAGE 極其低效。
-- 1. 更新所有數據庫統計信息(可選但建議)
EXEC sp_MSforeachdb @command1 = N'PRINT ''?''; EXEC [?].dbo.sp_updatestats;';
-- 2. 批量修正所有數據庫的頁/行計數
EXEC sp_MSforeachdb @command1 = N'PRINT ''?''; DBCC UPDATEUSAGE (?) WITH NO_INFOMSGS;';
sp_MSforeachdb:非文檔化但廣泛使用的系統存儲過程,遍歷所有數據庫DBCC UPDATEUSAGE:修正 sys.allocation_units、sys.partitions 等目錄視圖中的頁計數、行計數WITH NO_INFOMSGS:抑制信息性消息,輸出更乾淨| 適用 | 不適用/需謹慎 |
|---|---|
| 元數據計數不一致(頁/行計數錯誤) | 實際數據頁損壞(需從備份還原) |
| 數據庫數量多、逐個處理成本高 | 超大數據庫(執行時間長、影響並發) |
| 定期維護窗口自動化 | Always On 可用性組副本(需在主庫執行) |
DBCC CHECKDB (PHYSICAL_ONLY) 定期巡檢物理損壞
4. 重要數據庫建立完整備份鏈 + 定期恢復演練
作者:潇湘隱者 | 出處:https://www.cnblogs.com/kerrycode/