用備份事務日志尾部來還原數據庫誤操作


有時會碰到同事誤刪或誤更新了某些數據,現在把恢復數據的方法之一:備份日志尾部,簡單記錄一下。

1. 首先檢查你要還原的數據庫的恢復模式是否為完整,如果不是改為完整恢復模式。

其次,確保該數據庫至少做過一次完整備份,因為所有其他類型的備份都是基於完整備份的,如果不確定的話可以通過下面這個語句來查看數據庫的備份情況:

select    database_name,recovery_model,name,backup_finish_date 
from      msdb.dbo.backupset 
where     database_name='SmartDev' 
order by backup_finish_date desc,name

得到的結果:

 

2. 拿下面這個表來做例子:

select * from dbo.Office

有三條記錄,現在把數據刪掉:

delete from dbo.Office

數據清空了,現在要想辦法把數據恢復過來,我們要做一次日志尾部備份,這里要確保沒有人再連接到該數據庫上。

特別是Media Options這個選項頁中的各種選項要勾上,比如下圖這樣。

點OK執行,如果出現下面的提示,則表示此時還有別的進程連接在該數據庫上,因為備份日志尾部會使數據庫處於還原狀態,如果不斷開所有連接是執行不了的。

清除掉所有連接后再執行,備份成功后看看數據的狀態,表示正在還原中。

 

3. 進行還原數據庫操作。首先還原完整數據庫備份,這時要選擇最近的一次完整備份,

並在Options選項頁中,Recovery state要選擇第二項。

成功后看數據庫還是下面這個狀態,

接下來還原日志文件,在指定還原點時只要把時間指定到誤操作之前的時間就可以。

 Options選項頁中,因為日志文件是最后一個還原的文件,所以Recovery state選擇第一項。

 還原成功后

再查詢,表數據已經恢復。

 

4. 最后總結一下,我嘗試了多種情況,因為有可能存在多個完整備份,而這中間又可能有多個差異備份,得出以下幾點:

  a. 在還原完整數據庫備份時,一定要選擇離誤操作時間最近的一次,如果這個備份文件找不到了,而去找次一個最近的備份是還原不成功的。

  b. 如果在最近一次完整備份和誤操作時間之間還有多個差異備份的話,可以不用逐步還原這些差異備份再還原日志備份,而是在還原了最近一次完整備份后直接還原日志備份即可。

  c. 如果在還原的任何一部出現錯誤還原不成功,而數據庫又處於這種不可用狀態的話,可以用下面的語句恢復。

RESTORE DATABASE SmartDev WITH RECOVERY

可能還有些情況沒嘗試過,目前先只做到這些。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM