首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server DBCC CHECKDB 一致性錯誤批量修復:sp_MSforeachdb + UPDATEUSAGE 一鍵處理

     編輯:關於SqlServer

問題背景

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 可用性組副本(需在主庫執行)

最佳實踐建議

  1. 維護窗口內執行,避開業務高峰
  2. 2. 先在測試環境驗證腳本無副作用 3. 結合 DBCC CHECKDB (PHYSICAL_ONLY) 定期巡檢物理損壞 4. 重要數據庫建立完整備份鏈 + 定期恢復演練

作者:潇湘隱者 | 出處:https://www.cnblogs.com/kerrycode/

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved