段落還原保持進行檢查,以便確保數據庫在結束時將是一致的。 在還原順序結束后,如果恢復的文件有效并且與數據庫一致,則恢復的文件將直接變為聯機狀態。
段落還原適用于所有恢復模式,但在完整恢復模式和大容量日志恢復模式下比在簡單恢復模式下更靈活。
所有的段落還原都從稱為“部分還原順序”的初始還原順序開始。 部分還原順序至少還原和恢復主文件組,在簡單恢復模式下還會還原和恢復所有讀/寫文件組。 在段落還原順序中,整個數據庫都必須脫機。 隨后,數據庫將處于聯機狀態,并且還原的文件組都處于可用狀態。 但是,所有未還原的文件組都將保持脫機狀態,無法訪問。 不過,對于任何脫機文件組,都可以在以后通過文件還原進行還原并進入聯機狀態。
無論數據庫采用何種恢復模式,部分還原順序都從 RESTORE DATABASE 語句開始,該語句將還原完整備份并指定 PARTIAL 選項。 PARTIAL 選項總是會啟動一個新的段落還原;因此,在部分還原順序的初始語句中,只能指定 PARTIAL 一次。 當部分還原順序完成并且數據庫聯機后,由于余下文件的恢復被推遲,這些文件的狀態將變為“恢復已掛起”。
此后,段落還原通常包括一個或多個還原順序,這些還原順序稱為“文件組還原順序”。 您可以等待執行特定的文件組還原順序,等待的時間長短由您決定。 每個文件組還原順序將一個或多個脫機文件組還原并恢復到與數據庫一致的點。 文件組還原順序的時間安排和數量取決于您的恢復目標、您想要還原的脫機文件組數量以及每個文件組還原順序中還原的脫機文件組的數量。
執行段落還原的精確要求取決于數據庫的恢復模式。
下面我們來看看實例:
--段落還原:數據庫損壞范圍比較大,跨多個數據文件甚至跨文件組的時候,我們不得不恢復整個數據庫。--這時如果數據庫特別大,數據庫恢復時間將會很長。但我們可以使用SQL Server提供的段落還原,來逐步恢復數據庫。--首先備份尾日志:BACKUP LOG [AdventureWorks] TO DISK =N'D:/BACKUP_TEST/LOG_BACK_TAIL.trn' WITH NO_TRUNCATE ,NORECOVERY,COMPRESSION,STATS=10--部分還原主文件組PRIMARY:RESTORE DATABASE [AdventureWorks] FILEGROUP=N'PRIMARY' FROM DISK=N'D:/BACKUP_TEST/AD_FULL.bak' WITH PARTIAL,NORECOVERY,STATS=10--還原副文件組MST:RESTORE DATABASE [AdventureWorks] FILEGROUP=N'MST' 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=10RESTORE 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--此時AdventureWorks數據庫中位于PRIMARY和MST文件組中的文件已經可以訪問。--但是位于其他文件組如:TRN文件組中的表還不能訪問。--消息 8653,級別 16,狀態 1,第 2 行--查詢處理器無法為表或視圖“****”生成計劃,因為該表駐留在不處于聯機狀態的文件組中。--接下來還原副文件組TRN:RESTORE DATABASE [AdventureWorks] FILEGROUP=N'TRN' FROM DISK=N'D:/BACKUP_TEST/AD_FULL.bak' WITH NORECOVERY,STATS=10--如果數據庫不是企業版,以上還原將會提示“尚未備份數據庫 "AdventureWorks" 的日志尾部。”--需要再次備份一次日志尾部,意味著還原副文件組TRN的時候整個數據庫都處于正在還原狀態。所以對于非企業版而言,只能離線段落還原,個人覺得意義不是很大......--依次還原日志:RESTORE LOG [AdventureWorks] FROM DISK=N'D:/BACKUP_TEST/LOG_BACK_1.TRN' WITH NORECOVERY,STATS=10RESTORE 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--此時位于副文件組TRN中的表已經可以訪問了。--段落還原全部完成
新聞熱點
疑難解答