硬體故障、非正常關機等原因可能導致 SQL Server 2005 記錄檔 (LDF) 損壞,資料庫進入 疑似 狀態,事件日誌出現 Could not redo log record 等錯誤,且無法卸離、無法以 ATTACH_REBUILD_LOG 附加。
ALTER DATABASE dbname SET EMERGENCY 設為緊急模式。USE master
DECLARE @databasename VARCHAR(255)
SET @databasename = '目標資料庫名稱'
EXEC sp_dboption @databasename, N'single', N'true' -- 設為單一使用者模式
DBCC CHECKDB(@databasename, REPAIR_ALLOW_DATA_LOSS) -- 允許資料遺失修復
DBCC CHECKDB(@databasename, REPAIR_REBUILD) -- 重建索引等
EXEC sp_dboption @databasename, N'single', N'false' -- 恢復多使用者模式
REPAIR_ALLOW_DATA_LOSS 可能導致資料遺失,請務必先備份 MDF。DBCC CHECKDB 驗證一致性。此流程為實務中最常用的「唯有 MDF 檔案」災難復原手法,建議平時演練熟悉。