資料庫損毀是 DBA 最惡夢。本文提供以備份 .mdf 檔案重建資料庫的標準修復流程,適用於無完整備份、僅有資料檔案的緊急情境。
_data (如 abc_data.mdf),必須移除 _data 後綴,否則後續取代失敗.mdf 與 .ldf,用備份 .mdf 取代 (不需 .ldf)sp_configure 'allow updates', 1;
RECONFIGURE WITH OVERRIDE;
UPDATE sysdatabases SET status = 32768 WHERE name = '資料庫名';
DBCC REBUILD_LOG ('資料庫名', '完整路徑\資料庫名_Log.LDF');
路徑建議使用 SQL 資料目錄 (如 C:\Program Files\Microsoft SQL Server\MSSQL\Data\),系統會自動建立 LDF
UPDATE sysdatabases SET status = 0 WHERE name = '資料庫名';
sp_configure 'allow updates', 0;
RECONFIGURE WITH OVERRIDE;
DBCC CHECKDB ('資料庫名');
無錯誤即修復成功
sysdatabases 為檢視不可直接更新,allow updates 選項已移除CREATE DATABASE ... FOR ATTACH_REBUILD_LOG 或 DBCC CHECKDB (REPAIR_ALLOW_DATA_LOSS)-- 1. 嘗試附加並重建記錄檔
CREATE DATABASE [DBName] ON (FILENAME = '路徑\DBName.mdf') FOR ATTACH_REBUILD_LOG;
-- 2. 若失敗,進入緊急模式修復
ALTER DATABASE [DBName] SET EMERGENCY;
ALTER DATABASE [DBName] SET SINGLE_USER;
DBCC CHECKDB ([DBName], REPAIR_ALLOW_DATA_LOSS); -- 最後手段,可能遺失資料
ALTER DATABASE [DBName] SET MULTI_USER;
現代流程不需手動修改系統表,更安全且支援線上操作。