四大備份類型比較
| 類型 | 內容 | 適用場景 | 優點 | 缺點 |
| 完整備份 | 所有資料頁 + 部分記錄 | 所有資料庫、基準備份 | 還原最簡單、單一檔案 | 耗時、佔空間大、不可中斷 |
| 差異備份 | 自上次完整備份以來變更的區塊 | 每日/每小時補充 | 備份快、檔案小 | 還原需先還原完整再套用最新差異,累積越久越大 |
| 記錄備份 | 交易記錄區間 (LSN 範圍) | 完整/大量記錄模式、時間點還原 | 零資料遺失、可還原至任意秒 | 需完整備份為基礎、記錄檔會持續增長 |
| 檔案/檔案群組備份 | 指定檔案群組/檔案 | 超大型資料庫 (TB 級)、分片備份 | 平行備份、單獨還原損毀檔案 | 管理複雜、需完整記錄備份配合 |
三種復原模式與備份組合
| 復原模式 | 支援備份 | 記錄截斷機制 | 資料遺失風險 | 典型應用 |
| 簡單 | 完整、差異 | Checkpoint 自動截斷 | 自上次備份以來所有變更 | 開發/測試、唯讀、資料可重建 |
| 完整 | 完整、差異、記錄 | 記錄備份後截斷 | 無 (可還原至任意時間點) | 核心生產系統 |
| 大量記錄 | 完整、差異、記錄 (大量作業最小記錄) | 記錄備份後截斷 | 極低 (大量作業無法時間點還原) | 大量匯入/索引重建期間暫時切換 |
核心 T-SQL 腳本範本
1. 完整備份 (壓縮、驗證、統計)
BACKUP DATABASE [MyDB]
TO DISK = N'D:\Backup\MyDB_Full_20240115.bak'
WITH INIT, COMPRESSION, CHECKSUM, STATS = 10;
2. 差異備份
BACKUP DATABASE [MyDB]
TO DISK = N'D:\Backup\MyDB_Diff_20240115_1400.bak'
WITH DIFFERENTIAL, COMPRESSION, STATS = 10;
3. 記錄備份
BACKUP LOG [MyDB]
TO DISK = N'D:\Backup\MyDB_Log_20240115_1430.trn'
WITH COMPRESSION, STATS = 10;
4. 還原至時間點 (完整 + 差異 + 記錄)
RESTORE DATABASE [MyDB]
FROM DISK = N'D:\Backup\MyDB_Full_20240115.bak'
WITH NORECOVERY, REPLACE, STATS = 10;
RESTORE DATABASE [MyDB]
FROM DISK = N'D:\Backup\MyDB_Diff_20240115_1400.bak'
WITH NORECOVERY, STATS = 10;
RESTORE LOG [MyDB]
FROM DISK = N'D:\Backup\MyDB_Log_20240115_1430.trn'
WITH STOPAT = N'2024-01-15 14:25:00', RECOVERY, STATS = 10;
自動化策略建議 (維護計畫 / Agent Job)
- 每日 02:00 完整備份。
- 每 4 小時 差異備份 (06:00, 10:00, 14:00, 18:00, 22:00)。
- 每 15 分鐘 記錄備份 (完整模式)。
- 備份完成後執行 `RESTORE VERIFYONLY` 驗證。
- 異地複製:網路分享 / Azure Blob / AWS S3。
- 保留策略:完整備份 30 天、差異 7 天、記錄 3 天。
- 每季演練完整還原演練,記錄 RTO/RPO。
常見誤區
- 簡單模式下嘗試記錄備份 → 錯誤。
- 只做完整備份,無差異/記錄 → RPO = 24 小時。
- 記錄備份未定期執行 → 記錄檔暴漲填滿磁碟。
- 備份檔放在同一顆實體磁碟 → 單點故障。
- 從未驗證備份可還原性 → 災難發生時才發現備份損壞。