--段落還原:數據庫損壞范圍比較大,跨多個數據文件甚至跨文件組的時候,我們不得不恢復整個數據庫。--這時如果數據庫特別大,數據庫恢復時間將會很長。但我們可以使用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中的表已經可以訪問了。--段落還原全部完成
新聞熱點
疑難解答