.bak 檔 → 確定。ALTER DATABASE SET SINGLE_USER WITH ROLLBACK IMMEDIATE。| 錯誤 | 原因 | 解決 |
|---|---|---|
| 找不到路徑 / 檔案已存在 | 還原路徑與目標機器不符 | 「檔案」頁籤修正實體路徑 |
| 資料庫正在使用中 | 有作用中連線 | 勾選「關閉現有連線」或手動 ALTER DATABASE SET SINGLE_USER WITH ROLLBACK IMMEDIATE |
| 備份集持有不同的資料庫 GUID | 嘗試還原至不同名稱資料庫但未勾選 REPLACE | 勾選「覆蓋現有資料庫」或先刪除目標庫 |
| 記錄備份無法套用 | 上一步驟選了 WITH RECOVERY | 完整備份選 NORECOVERY,依序套用差異/記錄,最後一步 RECOVERY |
| 版本不相容 | 高版本備份還原至低版本 | 不可行,需腳本遷移 |
-- 1. 查看備份集內容
RESTORE HEADERONLY FROM DISK = 'D:\Backup\DB_Full.bak';
RESTORE FILELISTONLY FROM DISK = 'D:\Backup\DB_Full.bak';
-- 2. 還原 (範例:異地路徑、覆蓋、NORECOVERY 接續記錄)
RESTORE DATABASE [TargetDB]
FROM DISK = 'D:\Backup\DB_Full.bak'
WITH
MOVE 'LogicalData' TO 'D:\Data\TargetDB.mdf',
MOVE 'LogicalLog' TO 'L:\Log\TargetDB.ldf',
REPLACE, -- 覆蓋
NORECOVERY, -- 待套用記錄
STATS = 5; -- 進度 5% 回報
-- 3. 套用差異備份
RESTORE DATABASE [TargetDB] FROM DISK = 'D:\Backup\DB_Diff.bak' WITH NORECOVERY, STATS=5;
-- 4. 套用記錄備份 (依序)
RESTORE LOG [TargetDB] FROM DISK = 'D:\Backup\DB_Log_1.trn' WITH NORECOVERY;
RESTORE LOG [TargetDB] FROM DISK = 'D:\Backup\DB_Log_2.trn' WITH RECOVERY; -- 最後一筆 RECOVERY 上線
圖形介面適合偶發操作;自動化、跨機器、大型資料庫請使用 T-SQL 腳本並納入部署流程。關鍵在於 **檔案路徑重新導向**、**復原狀態正確串接**、以及 **事先驗證備份集 (HEADERONLY/FILELISTONLY/VERIFYONLY)**。