每個資料庫必須設定三種復原模式之一,透過 ALTER DATABASE ... SET RECOVERY 切換 (需獨佔存取或單一使用者模式)。
| 特性 | FULL (完整) | BULK_LOGGED (大量記錄) | SIMPLE (簡單) |
|---|---|---|---|
| 預設值 | Model 資料庫設定 (通常為 FULL) | ||
| 記錄內容 | 所有作業完整記錄 (含大量作業逐列) | 大量作業 (BCP, BULK INSERT, SELECT INTO, INDEX CREATE) 僅記錄範圍/頁面配置,非逐列 | 僅記錄足以支援交易回滾的資訊,Checkpoint 時自動截斷非作用中記錄 |
| 記錄檔增長 | 最快,需定期記錄備份截斷 | 大量作業期間增長緩慢 | 最慢,自動循環使用,通常維持較小 |
| 還原粒度 | 時間點還原 (Point-in-Time),任意秒級 | 僅支援 交易結束點還原,無法時間點還原 | 僅支援 完整/差異備份結束點還原 |
| 頁面還原 | 支援 (Enterprise) | 支援 (Enterprise) | 不支援 |
| 檔案/檔案組還原 | 支援 | 支援 | 不支援 (僅完整資料庫) |
| 適用場景 | 生產 OLTP、任務關鍵、需 RPO 接近零 | 大量匯入/索引重建維護窗口、暫時切換以降低記錄壓力 | 開發/測試、唯讀/資料倉儲 (可重建)、備份視窗極短 |
-- 完整資料庫備份至磁碟檔
BACKUP DATABASE [Northwind] TO DISK = N'C:\Backup\Northwind_Full.bak'
WITH INIT, COMPRESSION, CHECKSUM, STATS = 10;
-- 交易記錄備份 (僅 FULL/BULK_LOGGED)
BACKUP LOG [Northwind] TO DISK = N'C:\Backup\Northwind_Log.trn'
WITH NOINIT, COMPRESSION, CHECKSUM;
-- 差異備份
BACKUP DATABASE [Northwind] TO DISK = N'C:\Backup\Northwind_Diff.bak'
WITH DIFFERENTIAL, COMPRESSION;
-- 檔案/檔案組備份
BACKUP DATABASE [Northwind] FILEGROUP = 'SalesFG' TO DISK = N'C:\Backup\SalesFG.bak';
-- 建立邏輯裝置
EXEC sp_addumpdevice 'disk', 'Northwind_Backups', 'C:\Backup\Northwind_Multi.bak';
-- 使用邏輯裝置備份 (可累積多組)
BACKUP DATABASE [Northwind] TO Northwind_Backups;
BACKUP LOG [Northwind] TO Northwind_Backups;
-- 查看裝置內容
RESTORE HEADERONLY FROM Northwind_Backups;
WITH COMPRESSION, CHECKSUM 節省儲存/頻寬、偵測媒體損壞。RESTORE VERIFYONLY 或第三方工具 (Redgate SQL Backup, Commvault, Veeam) 定期還原測試。