1. 程式人生 > >通過sqlserver日誌恢復誤刪除的資料

通過sqlserver日誌恢復誤刪除的資料

如果你已經急的焦頭爛額,看到這篇文章的時候,請你換個坐姿,深呼吸幾次,靜下心來將這篇文章讀完,也許你的問題迎刃而解。

    我遇到的情況是這樣的,網站被植入木馬,盜取了我的web.config檔案,web.config檔案裡面的資料庫連線字串沒有加密,而我的資料庫遠端連線又沒有做IP限制,黑客通過資料庫客戶端連上我的資料庫後,將所有的表都Delete掉了,所以大家一定要有一個好習慣將資料庫連線字串加密或者對遠端訪問資料庫的IP作限制

    因被黑客Delete掉所有資料的具體時間點我不清楚,所以我就用了一個工具Log Explorer來檢視分析資料庫日誌,看具體是什麼時候被Delete掉的(若你已經知道想要還原的時間點,就不用使用此工具啦),至於Log Explorer

如何安裝使用的,這裡就不贅述了,去百度一搜一大堆,安裝的時候Client和Server都選,然後安裝中會有一步讓你輸入資料庫的使用者名稱和密碼,其他不懂的就瘋狂下一步吧。

    通過Log Explorer工具我檢視到被刪除的時間點是:07-10 09:46:29.880,那我一會把資料還原到07-10 09:46:29.879就好咧

下面開始言歸正傳的進行恢復操作了

1、將資料庫日誌備份一下,用T-Sql語句

1 BACKUP LOG shua TO DISK='c:\shua_log.bak' WITH FORMAT

2、因我的資料庫每天都有自動完整備份,找一個最近時間的完整備份,來還原一下,這裡我不往舊庫覆蓋了,直接還原成一個新的資料庫shua2

用SQL Server Management Studio工具進行介面操作吧,寫sql語句還原太複雜了,不會啊。

對著資料庫->右擊->還原資料庫,下圖是我在[還原資料庫]介面->[常規]選項卡頁的填寫情況

然後點【選項】選項卡頁,注意這一步非常重要哦

點選【不對資料庫執行任何操作,不回滾來提交的事務】,然後確定。如果資料庫比較大,這個還原要等很長時間,出去吸幾口新鮮空氣吧,大功就要告成了。

3、待資料庫還原成功後,是這個狀態

顯示(正在還原...),對著shua2這個資料庫右擊->任務->還原->還原事務日誌。

如上圖所填,先填剛開始備份的日誌c:\shua_log.bak,然後勾選[還原],最重要的是選擇時間點,可惜這個時間點不能選毫秒,所以我就選了29秒,這個時候會還原29.0秒以前的資料,而我的資料是從29.880秒被刪除的,所以選29秒妥妥的;為什麼我沒有選擇28秒呢?因為我的資料庫每一秒的改變都很大,所以我儘可能的縮小這個時間範圍。

填好後,點【確定】吧,大功告成了。現在資料庫已恢復成2014-07-10 09:46:29.0時的狀態,自然的我那些表資料都回來了。