SQL Server 數據誤刪恢復,根據事務日志恢復數據根據事務日志還原數據
廣告:
SQL Server 數據誤刪恢復,根據事務日志恢復數據
一、前言
經常看到有人誤刪數據,或者誤操作,特別是update和delete的時候沒有加where,然后就喊爹喊娘了。人非圣賢孰能無過,做錯可以理解,但不能縱容,這個以后再說,現在先來解決問題。
遇到這種情況,一般都是沒有做備份,不然也不會來發問了。首先要冷靜,否則會有更大的災難。直到你放棄。
之前生產數據庫使用的是sqlserver2000和2005,當時也出現過誤刪數據的情況,用Log Exlorer For SQL很輕松就恢復了數據,現在SQL Server數據庫已經升級到2016了這個工具無法使用了,因此只能采用其他辦法。
本次試驗環境是SQL Server 2012版本。但方法同樣適用其他版本的SQL Server,目前看起來SQL Server 2008之后的版本都是可以的 。
二、提醒
本方法需要數據庫的恢復模式是完整,且必須有一個完整的數據庫備份,如果沒有這兩個前提那就沒法使用這個方法恢復數據。所以日常的數據備份一定要做,否則死的是你自己。
另外如果有用AlwaysOn,需要現將AlwaysOn可用性數據庫刪除,不然后面的備份動作無法進行。
在此構建一個新的數據庫模擬數據恢復全過程。
三、實驗步驟
1、構建新數據庫以及寫入一些數據
新建數據表
寫入一些數據
需要注意數據庫的恢復模式一定要是完整,否則此方法不可行
2、做一次完整備份,這個是前提,沒有一份完整備份文件是無法進行接下來的操作的。
注意:如上圖所示,恢復模式一定要說完整,如果是其他類型那恐怕就沒有下文了。一般來講新建數據庫的時候,默認不要去改恢復模式這個屬性。
3、寫入一條新數據
這里隨便加了一條數據做為備份后寫入的新數據
4、刪除數據
這時悲劇出現,數據被刪除,且上次備份之后已經有新的數據寫入,直接恢復肯定新寫入的數據就丟失了。接下來繼續操作
記住此時要記錄時間點,在現實中往往會由于慌亂忘記記錄,但是希望看了這個文章之后能夠記住此事。時間越精確越好。
好既然悲劇已經發生,也有了心理準備和恢復前準備,此刻最好看一下系統時間。接下來就要演示如何進行數據恢復。
5、事務日志備份,
備份數據被刪除后的數據庫事務日志,
做事務日志備份需要注意一下一點,如圖所示:
備份模式請選擇事務日志,備份路徑自行決定
進入選項,將可靠性第1、2勾選,事務日志選擇第二個,壓縮屬性可以不選擇.點擊確定備份成功,此時數據庫將顯示為正在還原狀態
注意:如果備份失敗,請檢查該數據庫是否正在被占用,如果是請kill。如果有數據庫是AlwaysOn可用性數據庫,同樣也要先刪除!
選好之后點確定,數據庫開始備份,備份完成之后,數據庫狀態會變成正在還原…
6、還原完整備份
數據庫處于正在還原狀態,右鍵數據庫--任務--還原--文件和文件組,選擇最近的一次完整備份。
此時,需要在“選項”中選擇第二種還原方式,具體如下圖。
從字面意思就知道為什么要選擇這種。
7、還原備份的事務日志
完整備份還原完畢,接著要對事務日志進行還原,右鍵數據庫--任務--還原--事務日志,如下圖:
還原事務日志的時候需要特別注意“時間點”這個設置,其他不需要設置。
時間點選擇為誤刪數據的時間點之前就可以恢復出誤刪的數據,所以之前強調要查看一下時間。如下圖所示
點擊確定,在確定等待還原成功,數據庫變成可用狀態。此時后再查詢,如下圖:
如果查詢發現數據不是你想要的,那么可以重復上述的操作,從備份事務日志開始,然后最后選擇時間點的時候在縮小范圍。
以上,完整的演示了個人在恢復數據過程中的總結。當然前提是允許這樣干,當然大型電子商務系統、高并發系統應該不適用,肯定也不會出現誤刪數據的情況,都有對應的解決方案避免此類情況發生。
廣告: