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