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