錯誤現象
SQL Server 偵測到基於一致性的邏輯 I/O 錯誤:校驗和不正確(預期 0x7c781313,實際 0x67a313c9),檔案 E_BLOCK_DB.mdf,頁面 (1:1306)。
修復步驟
- 建立同名資料庫,停止服務,用損壞的
.mdf、.ldf 覆蓋新建檔案。
- 啟動服務,資料庫進入 SUSPECT 狀態。
- 執行緊急修復腳本:
ALTER DATABASE [DBName] SET EMERGENCY;
GO
USE master;
GO
DECLARE @dbname VARCHAR(255) = 'DBName';
EXEC sp_dboption @dbname, 'single', 'true'; -- 單用戶模式
DBCC CHECKDB(@dbname, REPAIR_ALLOW_DATA_LOSS);
DBCC CHECKDB(@dbname, REPAIR_REBUILD);
EXEC sp_dboption @dbname, 'single', 'false'; -- 回多用戶
GO
- 若出現「其他檔案與主檔案不符」錯誤,再執行一次
DBCC CHECKDB。
關鍵提醒
REPAIR_ALLOW_DATA_LOSS 可能導致資料遺失,務必先嘗試備份還原。
- 修復後必須執行
DBCC CHECKDB 驗證一致性。
- 生產環境建議配合頁面還原或檔案群還原,將資料損失降至最低。