針對 .mdf (資料檔) 與 .ldf (日誌檔) 的檔案級備份還原,涵蓋正常附加、僅有 MDF 強制重建日誌、系統表更新 (舊版) 等完整技術路徑。
.mdf 檔案,自動關聯 .ldf,確定。EXEC sp_attach_db 'MyDB', 'D:\Data\MyDB.mdf', 'D:\Data\MyDB_log.ldf';
-- 或
EXEC sp_attach_single_file_db 'MyDB', 'D:\Data\MyDB.mdf';
EXEC sp_attach_single_file_db 'MyDB', 'D:\Data\MyDB.mdf';
-- 可能出現警告:已建立新日誌檔,事務一致性遺失,需 DBCC CHECKDB
Msg 1813, Level 16, State 2: Could not open new database 'MyDB'. CREATE DATABASE aborted.
Device activation error. Physical file name '...ldf' may be incorrect.
CREATE DATABASE MyDB)。ALTER DATABASE MyDB SET OFFLINE WITH ROLLBACK IMMEDIATE 或停止 MSSQLSERVER 服務。MyDB_log.ldf,用備份的 MyDB.mdf 覆蓋 MyDB.mdf。-- 現代通用做法 (2005+)
ALTER DATABASE MyDB SET EMERGENCY;
GO
ALTER DATABASE MyDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
DBCC CHECKDB ('MyDB', REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS;
GO
ALTER DATABASE MyDB SET MULTI_USER;
GO
DBCC CHECKDB('MyDB') → 0 配置/一致性錯誤。EXEC sp_dboption 'MyDB', 'dbo use only', 'false' (舊版) / 已在 MULTI_USER 完成。sp_configure 'allow updates',0; RECONFIGURE WITH OVERRIDE。| 舊版 (7.0/2000) | 現代版 (2005+) | 說明 |
|---|---|---|
sp_configure 'allow updates',1 | ALTER DATABASE SET EMERGENCY | 允許修改系統目錄 / 進入緊急唯讀模式 |
UPDATE sysdatabases SET status=-32768 | (同上) | 標記為緊急模式 |
DBCC REBUILD_LOG | DBCC CHECKDB ... REPAIR_ALLOW_DATA_LOSS | 重建交易日誌 |
sp_dboption 'dbo use only', 'false' | ALTER DATABASE SET MULTI_USER | 恢復多用戶存取 |
REPAIR_ALLOW_DATA_LOSS 會刪除損壞頁面,導致資料遺失,執行前必須備份原始 MDF。allow updates),務必用 EMERGENCY 模式。