在線文件還原:若是比較大的MSSQL數據庫的損壞只是集中在其中某一個文件或者文件組上,使用在線文件還原技術,
只是把壞掉的數據文件或者文件組重建,能節約不少時間。
如下是測試腳本(假設損壞的文件時Trn01):數據庫
--首先還原損壞的文件Trn01(執行這一步以前,你必須取得數據庫的獨佔訪問權): RESTORE DATABASE [AdventureWorks] FILE=N'Trn01' FROM DISK=N'D:\BACKUP_TEST\AD_FULL.BAK' WITH NORECOVERY,STATS=10 --若是不是企業版,將會出現錯誤消息 3159,提示你須要使用BACKUP LOG WITH NORECOVERY 備份尾日誌,意味着您只能離線文件還原。
--BACKUP LOG [AdventureWorks] TO DISK =N'D:\BACKUP_TEST\Log_BACK_TAIL.TRN' WITH NORECOVERY,COMPRESSION,STATS=10 --囉嗦一句,若是是企業版,執行完成後此時你能夠放開獨佔訪問權了。(若是是經過更改成SINGLE_USER模式的話,如今能夠改成MULTI_USER放開訪問了) --但此時Trn01所屬的文件組TRN不能被訪問,TRN文件組之外的數據庫內容能夠被訪問。 --若是試圖訪問Trn01中的表,將出現以下的錯誤消息: --消息 8653,級別 16,狀態 1,第 2 行 --查詢處理器沒法爲表或視圖「***」生成計劃,由於該表駐留在不處於聯機狀態的文件組中。 --備份文件離線時點的日誌: BACKUP LOG [AdventureWorks] TO DISK =N'D:\BACKUP_TEST\Log_BACK_TAIL.TRN' WITH COPY_ONLY,COMPRESSION,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