Could not redo log record、Restore from a backup or repair the database 等訊息。CREATE DATABASE ... FOR ATTACH_REBUILD_LOG 提示 The log cannot be rebuilt because the database was not cleanly shut down。USE master;
GO
ALTER DATABASE [YourDB] SET EMERGENCY;
GO
ALTER DATABASE [YourDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
DBCC CHECKDB ([YourDB], REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS;
GO
DBCC CHECKDB ([YourDB], REPAIR_REBUILD) WITH NO_INFOMSGS, ALL_ERRORMSGS;
GO
ALTER DATABASE [YourDB] SET MULTI_USER;
GO
關鍵說明:
EMERGENCY 模式僅允許 sysadmin 存取,繞過復原程序掛載資料庫。REPAIR_ALLOW_DATA_LOSS 可能刪除損壞頁面導致資料遺失,務必先備份 .mdf。| 誤區 | 正確做法 |
|---|---|
| 直接刪除 .ldf 再 ATTACH_REBUILD_LOG | 僅在資料庫乾淨關閉時可行;Supect 狀態下會失敗 |
| 只跑 REPAIR_REBUILD 不跑 REPAIR_ALLOW_DATA_LOSS | 嚴重損壞時必須先允許資料遺失修復,再重建索引 |
| 修復後直接上線 | 必須驗證資料完整性、應用功能測試、重建索引更新統計資訊 |
CHECKSUM 頁面驗證(ALTER DATABASE SET PAGE_VERIFY CHECKSUM)。DBCC CHECKDB 排程(建議離峰時段),並設定警示通知。