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

SQL Server 資料庫修復腳本:DBCC CHECKDB 與單一使用者模式

     編輯:關於SqlServer

適用情境

資料庫因斷電、硬體故障、非正常關機導致損壞,狀包含查詢緩慢、資料遺漏、索引不一致等。需離線修復。

完整修復腳本 (需獨佔存取)

USE MASTER; GO

-- 1. 切換至單一使用者模式,斷開所有連線
EXEC sp_dboption 'YourDatabase', 'single user', 'true'; GO

-- 2. 執行完整資料庫一致性檢查並嘗試重建修復
DBCC CHECKDB('YourDatabase', REPAIR_REBUILD); GO

-- 3. 切換回目標資料庫逐表檢查修復
USE YourDatabase; GO
EXEC sp_msforeachtable 'DBCC CHECKTABLE(''?'', REPAIR_REBUILD)'; GO

-- 4. 恢復多使用者模式
EXEC sp_dboption 'YourDatabase', 'single user', 'false'; GO

關鍵選項說明

選項說明
REPAIR_REBUILD執行無資料遺失的修復動作(重建索引、修正頁面鏈結等),較安全。
REPAIR_ALLOW_DATA_LOSS允許資料遺失的深度修復(配置頁重建、刪除損壞資料列),最後手段,務必先備份。
sp_msforeachtable未文件化預存程序,逐一對每個使用者表執行指令,`?` 為表名佔位符。

執行前必備檢查

  1. 確認具備最新完整備份(含交易記錄)。
  2. 通知所有使用者停止存取,排程維護時窗。
  3. 檢查磁碟空間充足(修復過程可能產生暫存檔)。
  4. 記錄錯誤訊息供事後分析根因。

總結

DBCC CHECKDB 配合單一使用者模式是 SQL Server 資料庫修復標準流程。優先使用 REPAIR_REBUILD 避免資料遺失,若無效再評估 REPAIR_ALLOW_DATA_LOSS。平時落實備份策略、監控 I/O 錯誤、定期執行 DBCC CHECKDB (僅檢查不修復) 才是根本預防之道。

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