| 類型 | 備份內容 | 依賴基礎 | 存檔屬性 | 適用場景 |
|---|---|---|---|---|
| 完整備份 | 所有資料頁 | 無 | 清除 | 基礎備份、較小資料庫 |
| 差異備份 | 上次完整備份後變更 | 最後完整備份 | 保留 | 日常備份、縮短備份窗口 |
| 記錄備份 | 交易記錄區間 | 完整/差異備份 + 記錄鏈 | 清除 | 時間點還原、高頻率保護 |
| 檔案/檔案組備份 | 指定檔案/組 | 視復原模式 | - | 超大型資料庫、分區管理 |
-- 建立測試資料庫與備份序列
CREATE DATABASE TestBackup;
-- 1. 完整備份 (建立 Table1 後)
BACKUP DATABASE TestBackup TO DISK = 'TestBackupDB-full.bak';
-- 2. 差異備份 (建立 Table2 後)
BACKUP DATABASE TestBackup TO DISK = 'TestBackupDB-diff.bak' WITH DIFFERENTIAL;
-- 3. 記錄備份 (建立 Table3 後)
BACKUP LOG TestBackup TO DISK = 'TestBackupDB-log.bak';
RESTORE DATABASE TestBackup2
FROM DISK = 'TestBackupDB-full.bak'
WITH NORECOVERY,
MOVE 'TestBackup' TO 'C:\Data\TestBackup2.mdf',
MOVE 'TestBackup_log' TO 'C:\Log\TestBackup2.ldf';
RESTORE DATABASE TestBackup2
FROM DISK = 'TestBackupDB-diff.bak'
WITH NORECOVERY;
RESTORE LOG TestBackup2
FROM DISK = 'TestBackupDB-log.bak'
WITH RECOVERY; -- 或指定 STOPAT 還原至特定時間點
在還原介面「還原為」欄位修改對應的實體檔案路徑即可。
錯誤: 「檔案已存在」或存取衝突
解決方案:
- 重啟 SQL Server 服務
- 或設定資料庫限制存取:
ALTER DATABASE TestBackup2 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
| 時間 | 操作 | 保留 |
|---|---|---|
| 週日 02:00 | 完整備份 | 4 週 |
| 每日 02:00 | 差異備份 | 2 週 |
| 每 4 小時 | 記錄備份 | 3 天 |
| 故障發生 | 尾記錄備份 (TAIL LOG) | - |
RESTORE VERIFYONLY FROM DISK = '...'RESTORE FILELISTONLY / HEADERONLY