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

以上就是本文的全部內容,希望對大家的學習有所幫助。
您可能感興趣的文章:- 定時自動備份IIS的WWW日志的vbs腳本
- mssql自動備份及自動清除日志文件服務器設置
- sqlserver 數據庫日志備份和恢復步驟
- SQL Server2008 數據庫誤刪除數據的恢復方法分享
- SQL server 2008 數據安全(備份和恢復數據庫)
- SQL Server誤區30日談 第20天 破壞日志備份鏈之后,需要一個完整備份來重新開始日志鏈
- Shell腳本定時備份清除運行系統日志的代碼
- win平臺oracle rman備份和刪除dg備庫歸檔日志腳本
- 數據庫崩潰,利用備份和日志進行災難恢復
- SQL Server 2008及更高版本數據庫恢復方法之日志尾部備份