除了 BACKUP/RESTORE,直接複製 .mdf/.ldf 檔案也是有效的備份還原方式,特別適合檔案層級備份軟體、磁碟快照、跨伺服器快速遷移。
-- 卸離 (需單一使用者或殺連線)
EXEC sp_detach_db 'TestDB';
-- 複製 TestDB.mdf、TestDB_log.ldf 至備份儲存區
-- 還原:附加
EXEC sp_attach_db 'TestDB',
'D:\Data\TestDB.mdf',
'D:\Data\TestDB_log.ldf';
-- 或單檔附加 (自動重建記錄檔)
EXEC sp_attach_single_file_db 'TestDB', 'D:\Data\TestDB.mdf';
適用版本:SQL 7.0 / 2000 / 2005 / 2008 / 2012 / 2014 / 2016 / 2019。
情境:跨機器複製、記錄檔遺失/損壞。
CREATE DATABASE Test)。.mdf 覆蓋目標 .mdf;刪除目標 .ldf。EXEC sp_configure 'allow updates', 1; RECONFIGURE WITH OVERRIDE;
UPDATE sysdatabases SET status = -32768 WHERE dbid = DB_ID('Test');
DBCC REBUILD_LOG('Test', 'D:\Data\Test_log.ldf');
成功訊息:Warning: The log for database 'Test' has been rebuilt...
DBCC CHECKDB('Test')。EXEC sp_dboption 'Test', 'dbo use only', 'false';。EXEC sp_configure 'allow updates', 0; RECONFIGURE WITH OVERRIDE;。CREATE DATABASE Test
ON (FILENAME = 'D:\Data\Test.mdf')
FOR ATTACH_REBUILD_LOG;
GO
單一指令完成上述 1-9 步驟,自動重建記錄檔並線上資料庫。
allow updates 為舊版相容選項,新版建議避免直接更新系統目錄。BACKUP DATABASE,支援差異/記錄/壓縮/加密/校驗和。掌握 sp_attach_db、FOR ATTACH_REBUILD_LOG 與緊急修復流程,在災難現場能快速恢復核心資料服務。