分段還原允許在資料庫部分離線狀態下,優先恢復關鍵檔案群(如 PRIMARY),讓核心業務先上線,再逐步恢復次要檔案群。適用於完整/大量記錄復原模式,簡單模式限制較多。
-- 1. 備份尾部記錄 BACKUP LOG [AdventureWorks] TO DISK = N'D:\BACKUP_TEST\LOG_BACK_TAIL.trn' WITH NO_TRUNCATE, NORECOVERY, COMPRESSION, STATS = 10; -- 2. 部分還原 PRIMARY RESTORE DATABASE [AdventureWorks] FILEGROUP = N'PRIMARY' FROM DISK = N'D:\BACKUP_TEST\AD_FULL.bak' WITH PARTIAL, NORECOVERY, STATS = 10; -- 3. 還原次要檔案群 MST RESTORE DATABASE [AdventureWorks] FILEGROUP = N'MST' FROM DISK = N'D:\BACKUP_TEST\AD_FULL.bak' WITH NORECOVERY, STATS = 10; -- 4. 依序還原記錄備份 RESTORE LOG [AdventureWorks] FROM DISK = N'D:\BACKUP_TEST\LOG_BACK_1.TRN' WITH NORECOVERY, STATS = 10; RESTORE LOG [AdventureWorks] FROM DISK = N'D:\BACKUP_TEST\LOG_BACK_2.TRN' WITH NORECOVERY, STATS = 10; -- 5. 還原尾部記錄並恢復 RESTORE LOG [AdventureWorks] FROM DISK = N'D:\BACKUP_TEST\LOG_BACK_TAIL.TRN' WITH RECOVERY, STATS = 10; -- 此時 PRIMARY、MST 可存取;TRN 檔案群仍離線 -- 6. 後續還原 TRN 檔案群(企業版可線上,非企業版需離線) RESTORE DATABASE [AdventureWorks] FILEGROUP = N'TRN' FROM DISK = N'D:\BACKUP_TEST\AD_FULL.bak' WITH NORECOVERY, STATS = 10; -- 非企業版此處會要求再次備份尾部記錄,導致整庫離線 RESTORE LOG [AdventureWorks] FROM DISK = N'D:\BACKUP_TEST\LOG_BACK_1.TRN' WITH NORECOVERY, STATS = 10; RESTORE LOG [AdventureWorks] FROM DISK = N'D:\BACKUP_TEST\LOG_BACK_2.TRN' WITH NORECOVERY, STATS = 10; RESTORE LOG [AdventureWorks] FROM DISK = N'D:\BACKUP_TEST\LOG_BACK_TAIL.TRN' WITH RECOVERY, STATS = 10; -- 全庫恢復完成
PARTIAL:啟動分段還原,只能出現在第一條 RESTORE DATABASE。NORECOVERY:保持資料庫恢復中狀態,等待後續記錄。RECOVERY:完成最後一筆記錄還原後,資料庫上線。STATS = 10:每 10% 顯示進度。標準版/開發版執行檔案群還原時,整個資料庫會進入「還原中」離線狀態,無法達到「核心業務先上線」的目的。生產環境若需真正的線上分段還原,請使用企業版。