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