1. 程式人生 > >實戰 SQL Server 2008 數據庫誤刪除數據的恢復

實戰 SQL Server 2008 數據庫誤刪除數據的恢復

條件 實戰 ack body dba blog 生成 mode records

今天有個朋友很著急地打電話給我,他用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, 然後就完成數據的恢復!

技術分享圖片

接下來,就是慶祝勝利!慶祝勝利最好的方式就是寫一篇博客!

實戰 SQL Server 2008 數據庫誤刪除數據的恢復