今天有個朋友很著急地打電話給我,他用delete語句誤刪除了SQL Server 2008數據庫中兩個表中的所有記錄,而這個數據庫之前沒有任何備份。讓我幫他解決一下,不然他要賠償客戶很多錢。
SQL Server中誤刪除數據的恢復本來不是件難事,從事務日志恢復即可。但是,這個恢復需要有兩個前提條件:
1. 至少有一個誤刪除之前的數據庫完全備份。
2. 數據庫的恢復模式(Recovery mode)是“完整(Full)”。
針對這兩個前提條件,會有三種情況:
情況一、 如果這兩個前提條件都存在,通過SQL語句只需三步就能恢復( 參考文章 ),無需借助第三方工具。
a) 備份當前數據庫的事務日志:BACKUP LOG [數據庫名] TO disk= N'備份文件名' WITH NORECOVERY
b) 恢復一個誤刪除之前的完全備份:RESTORE DATABASE [數據庫名] FROM DISK = N'完全備份文件名' WITH NORECOVERY,? REPLACE
c) 將數據庫恢復至誤刪除之前的時間點:RESTORE LOG [數據庫] FROM? DISK = N'第一步的日志備份文件名' WITH?? STOPAT = N'誤刪除之前的時間點' , RECOVERY
情況二、 如果第1個前提條件不存在,第2個前提條件存在,需要借助第三方工具。
情況三、 如果第2個前提條件不存在,無法恢復。所以,一定要將數據庫恢復模式設置為 “完整(Full)”。
我現在面臨的是第二種情況,需要找第三方工具。
開始找的是 Log Explorer for SQL Server ,不支持SQL Server 2008。
后來找的是 SQL Log Rescue ,也不支持SQL Server 2008。
接著找到的是 SysTools SQL Recovery ,支持SQL Server 2008,但需要購買,Demo版并沒有數據恢復功能。
最終在officerecovery.com上找到 Recovery for SQL Server ,雖然也是商業軟件,需要購買,但Demo版可以恢復數據,只要數據庫文件不超過24Gb。幸好朋友的數據庫文件不大,用它完成了誤刪除數據的恢復。
下面分享一下用Recovery for SQL Server進行恢復的操作步驟:
1. 運行Recovery for SQL Server
2. 點擊菜單中的 File > Recover,選擇要恢復的數據庫的數據文件(.mdf)
3. Next > Next,進入 Recovery Configuration 界面,選擇Custom(選擇了Custom才可以選擇從日志中恢復誤刪除的數據)。
4. Next 進入 Recovery options 窗口,選中 Search for deleted records,并選擇要恢復的數據庫的日志文件路徑(log file path)。
5. Next 并選擇目標文件夾(Destination folder),用于存放恢復過程中生成的SQL語句與bat文件。
6. 點擊Start,開始恢復操作(在上一步選擇的目標文件夾中生成相應的SQL文件與Bat文件),然后,出現 SQL Server Database Creation Utility 窗口。
7. Next,選擇被恢復數據存放的目標數據庫。
8. Next, 選擇 Import availiable data from both database and log files
9. Next, Next, 然后就完成數據的恢復!
接下來,就是慶祝勝利!慶祝勝利最好的方式就是寫一篇博客!
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
