標籤:des blog http io ar for strong sp 檔案
關鍵字:SQL Server 2008, recover deleted 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 資料庫誤刪除資料的恢複