SqlServer2008誤操作數(shù)據(jù)(delete或者update)后恢復(fù)數(shù)據(jù)的方法
實(shí)際工作中,有時(shí)會(huì)直接在數(shù)據(jù)庫(kù)中操作數(shù)據(jù),比如對(duì)數(shù)據(jù)進(jìn)行delete或者update操作,當(dāng)進(jìn)行這些操作的時(shí)候,如果沒(méi)有加上 where條件或者where條件不合理,那么導(dǎo)致的結(jié)果可想而知,如果操作的又是線上數(shù)據(jù)庫(kù),那么這個(gè)后果將會(huì)非常嚴(yán)重。
當(dāng)事情發(fā)生后,我們要想辦法補(bǔ)救,針對(duì)于sqlserver2005數(shù)據(jù)庫(kù),有個(gè)很出名的工具Log Exploer。具體操作使用大家可以自行搜索;針對(duì)于sqlserver2008也有這樣的工具,但是大多是需要付費(fèi)的...我們嘗試用 sqlserver的事務(wù)日志來(lái)恢復(fù)這些受影響的數(shù)據(jù)。
用事務(wù)日志恢復(fù)數(shù)據(jù),需要兩個(gè)必要條件:
1、正確的完整數(shù)據(jù)庫(kù)的最后一次備份
如果沒(méi)有數(shù)據(jù)庫(kù)完整備份,是不能做事務(wù)日志備份的,所以建議創(chuàng)建數(shù)據(jù)庫(kù)時(shí),恢復(fù)模式一項(xiàng),應(yīng)當(dāng)選擇'完整'。
2、正確的即時(shí)點(diǎn)
即所要恢復(fù)到數(shù)據(jù)的時(shí)間點(diǎn),這個(gè)時(shí)間點(diǎn)一般選擇誤操作發(fā)生時(shí)間往前一點(diǎn)的時(shí)間點(diǎn),所以當(dāng)誤操作發(fā)生時(shí),應(yīng)盡量記下這個(gè)時(shí)間點(diǎn),不然可能導(dǎo)致恢復(fù)的數(shù)據(jù)不夠準(zhǔn)確。比如,
誤操作發(fā)生于16:00,這個(gè)時(shí)間點(diǎn)我們可以選擇15:59,如果選擇的太靠前,比如15:30,那么15:30--15:59這段時(shí)間內(nèi)的數(shù)據(jù)就不能被恢復(fù)了。
下面記錄具體的操作步驟:
首先新建一個(gè)數(shù)據(jù)庫(kù)dbtest,注意創(chuàng)建數(shù)據(jù)庫(kù)時(shí)恢復(fù)模式一項(xiàng)選擇'完整',在數(shù)據(jù)庫(kù)中新建一個(gè)Table_1,并插入一些數(shù)據(jù),然后對(duì)該數(shù)據(jù)庫(kù)做一個(gè)完整備份。

這個(gè)備份,主要是模擬實(shí)際工作中對(duì)數(shù)據(jù)庫(kù)的備份,實(shí)際中由于數(shù)據(jù)庫(kù)可能很大,所以一般備份是一天或者兩天進(jìn)行一次。
備份成功后,接著再往Table_1中插入幾條數(shù)據(jù), 模擬在原數(shù)據(jù)庫(kù)基礎(chǔ)上新增加的數(shù)據(jù),然后執(zhí)行一個(gè)sql語(yǔ)句:delete from Table_1,模擬誤操作,并記錄下時(shí)間,比如16:00.誤操作發(fā)生后,我們要趕緊進(jìn)行事務(wù)日志的備份,我們就是根據(jù)此備份來(lái)還原數(shù)據(jù)的。

事務(wù)日志備份完后,我們可以新建個(gè)數(shù)據(jù)庫(kù)dbtest1,然后把之前備份的數(shù)據(jù)庫(kù)在新建的數(shù)據(jù)中進(jìn)行還原,之所以這么做,是因?yàn)橛檬聞?wù)日志 恢復(fù)數(shù)據(jù)庫(kù)需要獲得數(shù)據(jù)庫(kù)的獨(dú)占訪問(wèn)權(quán),如果在原庫(kù)上進(jìn)行恢復(fù),那么這需要對(duì)原庫(kù)停止對(duì)外服務(wù),但是這樣,可能會(huì)導(dǎo)致線上系統(tǒng)不能正常運(yùn)行,造成非常大的 影響,所以我們新建個(gè)數(shù)據(jù)庫(kù)用作數(shù)據(jù)的還原,而不影響線上系統(tǒng)的正常進(jìn)行。最后把新庫(kù)中還原回來(lái)的數(shù)據(jù),再導(dǎo)入到原庫(kù)中。
對(duì)dbtest1進(jìn)行還原時(shí),注意"選項(xiàng)"的配置

數(shù)據(jù)庫(kù)還原成功后,此時(shí)dbtest1應(yīng)為正在還原的狀態(tài):
,接著對(duì)數(shù)據(jù)庫(kù)進(jìn)行還原:任務(wù)—>還原—>事務(wù)日志,

時(shí)間點(diǎn)選擇誤操作之前的一個(gè)時(shí)間點(diǎn),比如15:59:59,然后確定,完成全部數(shù)據(jù)恢復(fù)操作。
下面的一段話源自其他帖子:
1、這是一般大型網(wǎng)站數(shù)據(jù)安全的一個(gè)辦法,因?yàn)閿?shù)據(jù)庫(kù)比較大(可能有幾百G)數(shù)據(jù),做一次完整備份時(shí)間很長(zhǎng),而且影響數(shù)據(jù)庫(kù)服務(wù)器的性能, 為保證數(shù)據(jù)安全,大多采用完整備份+事務(wù)日志備份來(lái)保證數(shù)據(jù)安全。例如:一天做一次或者2天做一次完整備份,幾個(gè)小時(shí)內(nèi)做一次日志備份。(當(dāng)然可以用寫一 個(gè)job來(lái)實(shí)現(xiàn))
2、如SQL server 2005里的鏡像就是采用的這種事務(wù)日志同步的方法保證數(shù)據(jù)的同步。
3、如果恢復(fù)的日志數(shù)據(jù)出現(xiàn)”LSN“太早和太晚說(shuō)明了事務(wù)日志間的不連續(xù)。這時(shí)要注意備份 的時(shí)間和順序。
參考文章:
SQL Server 2008數(shù)據(jù)庫(kù)誤刪數(shù)據(jù)如何進(jìn)行數(shù)據(jù)恢復(fù)
SQL Server 2008及更高版本數(shù)據(jù)庫(kù)恢復(fù)方法之日志尾部備份
拯救你的數(shù)據(jù) 通過(guò)日志恢復(fù)MSSQL數(shù)據(jù)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
相關(guān)文章
SQL SERVER 2008 中三種分頁(yè)方法與比較
SQL SERVER 2008 中三種分頁(yè)方法與比較,需要的朋友可以參考一下2013-04-04
Excel導(dǎo)入數(shù)據(jù)庫(kù)時(shí)出現(xiàn)的文本截?cái)鄦?wèn)題解決方案
在把Excel導(dǎo)入到數(shù)據(jù)庫(kù)中時(shí),發(fā)生文本截?cái)鄦?wèn)題:即導(dǎo)入的數(shù)據(jù)每行只有一部分,遇到這樣的問(wèn)題,甚是尷尬,接下來(lái)介紹此問(wèn)題的解決方法,感興趣的朋友可以了解下,希望本文對(duì)你有所幫助2013-01-01
SQL SERVER 2008 R2配置管理器出現(xiàn)“遠(yuǎn)程過(guò)程調(diào)用失敗”(0x800706be)錯(cuò)誤提示
本文主要記錄了SQL SERVER 2008 R2配置管理器出現(xiàn)“遠(yuǎn)程過(guò)程調(diào)用失敗”(0x800706be)錯(cuò)誤提示的解決方法,圖文并茂,非常的實(shí)用,有需要的朋友可以參考下2014-10-10
Spring security實(shí)現(xiàn)登陸和權(quán)限角色控制
這篇文章主要介紹了Spring security實(shí)現(xiàn)登陸和權(quán)限角色控制,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10
SQL Server 2008 R2數(shù)據(jù)庫(kù)鏡像部署圖文教程
數(shù)據(jù)庫(kù)鏡像是一種針對(duì)數(shù)據(jù)庫(kù)高可用性的基于軟件的解決方案。其維護(hù)著一個(gè)數(shù)據(jù)庫(kù)的兩個(gè)相同的副本,這兩個(gè)副本分別放置在不同的SQL Server數(shù)據(jù)庫(kù)實(shí)例中2013-06-06
SQL Server復(fù)制需要有實(shí)際的服務(wù)器名稱才能連接到服務(wù)器
服務(wù)器上安裝的WIN2008 R2,然后沒(méi)有在意機(jī)器名,安裝了SQL2008 R2數(shù)據(jù)庫(kù)之后,配置AD域的時(shí)候修改了機(jī)器名2013-11-11
SQL Server 2008數(shù)據(jù)庫(kù)誤刪數(shù)據(jù)如何進(jìn)行數(shù)據(jù)恢復(fù)
這篇文章主要為大家詳細(xì)介紹了SQL Server 2008數(shù)據(jù)庫(kù)誤刪數(shù)據(jù)如何進(jìn)行數(shù)據(jù)恢復(fù)的方法,感興趣的小伙伴們可以參考一下2016-05-05
sql2008啟動(dòng)代理未將對(duì)象應(yīng)用到實(shí)例解決方案
本文將介紹sql2008啟動(dòng)代理未將對(duì)象應(yīng)用到實(shí)例的多種原因,本文提供詳細(xì)解決方案,需要了解的朋友可以參考下2012-11-11
SQL Server 2008 Express如何開(kāi)啟遠(yuǎn)程訪問(wèn)
這篇文章主要介紹了SQL Server 2008 Express 遠(yuǎn)程訪問(wèn)的設(shè)置方法,需要的朋友可以參考下2015-10-10

