因爲長時間從事企業應用系統開發,前往用戶現場升級、調試系統是比較常作的事情,可是就在週一,因爲同事的失誤在毫無知覺的狀況下誤刪了生產數據庫幾乎全部的數據。當我發現的那一刻,感受頭髮都立起來了,心想這他孃的是要領盒飯了。
爲了迅速恢復系統的使用,在當時的狀況下當即關閉相關係統的訪問入口,先後共花費不到五分鐘。通過思考,當即將最近的一次備份文件進行還原,從而保證了系統的正常運行,可是此舉也不可避免的可能會丟掉某些數據。html
另外事情已經發生,如何作才能爲之後的數據恢復作準備呢,如下是本身的觀點:sql
一、務必冷靜,事情已經發生不可慌亂。數據庫
二、當即查看當前時間,最好可以精確到秒,並作記錄。併發
三、應當即向直接上級反映此事,不可隱瞞,防止事態擴大。高併發
四、若是權限容許,應當當即中止相關應用,防止有新的數據寫入數據庫。工具
過後一直不放心,當下次再出現這種狀況的時候,該如何對數據進行數據恢復,儘量的減少損失呢(作不到徹底避免損失),所以從網上查閱大量資料並進行整理。sqlserver
以前生產數據庫使用的是sqlserver2000和2005,當時也出現過誤刪數據的狀況,用Log Exlorer For SQL很輕鬆就恢復了數據,如今數據庫升級到2012了這個工具沒法使用了,所以只能採用其餘辦法,在此須要特別鳴謝CSDN一位大神的文章,網址:http://blog.csdn.net/dba_huangzj/article/details/8491327spa
原文是SQLSERVER2008R2,本次試驗環境是2012版本。根據文章中過程的介紹,進行了整個過程的操做,可是仍是未能一遍完成,如今在本身的操做過程當中進行總結,並分享。.net
在此構建一個新的數據庫模擬數據恢復全過程。3d
一、構建新數據庫以及寫入一些數據
二、作一次完整備份,這個是前提,沒有一份完整備份文件是沒法進行接下來的操做的。
注意:如上圖所示,恢復模式必定要說完整,若是是其餘類型那恐怕就沒有下文了。通常來說新建數據庫的時候,默認不要去改恢復模式這個屬性。
三、寫入一條新數據
四、刪除數據,讓悲劇重現,記住此時要記錄時間點,在現實中每每會因爲慌亂忘記記錄,可是但願看了這個文章以後可以記住此事。
好既然悲劇已經發生,也有了心理準備和恢復前準備,此刻最好看一下系統時間。接下來就要演示如何進行數據恢復。
五、作事務日誌備份,作事務日誌備份須要注意一下一點,如圖所示
備份模式請選擇事務日誌,備份路徑自行決定
進入選項,將可靠性第一、2勾選,事務日誌選擇第二個,壓縮屬性能夠不選擇.點擊肯定備份成功,此時數據庫將顯示爲正在還原狀態
注意:若是備份失敗,請檢查該數據庫是否正在被佔用,若是是請kill。
六、還原完整備份
數據庫處於正在還原狀態,右鍵數據庫--任務--還原--文件和文件組,選擇最近的一次完整備份。此時,須要在「選項」中選擇第二種還原方式,具體以下圖。
如上圖,勾選完整數據備份文件。
如上圖,恢復狀態選擇第二種,從字面意思就知道爲何要選擇這種。
七、接着還原備份的事務日誌
完整備份還原完畢,接着要對事務日誌進行還原,右鍵數據庫--任務--還原--事務日誌,以下圖:
還原事務日誌的時候須要特別注意「時間點」這個設置,其餘不須要設置。
時間點選擇爲誤刪數據的時間點以前就能夠恢復出誤刪的數據,因此以前強調要查看一下時間。以下圖所示
點擊肯定,在肯定等待還原成功,數據庫變成可用狀態。此時後再查詢,以下圖:
若是查詢發現數據不是你想要的,那麼能夠重複上述的操做,從備份事務日誌開始,而後最後選擇時間點的時候在縮小範圍。
以上,完整的演示了我的在恢復數據過程當中的總結。固然前提是容許這樣幹,固然大型電子商務系統、高併發系統應該不適用,確定也不會出現誤刪數據的狀況,都有對應的解決方案避免此類狀況發生。
轉載:
[原創]LOG EXPLORER FOR SQL SERVER 4.2 (一) http://www.cnblogs.com/whitney/archive/2008/08/22/1273879.html
實戰 SQL Server 2008 數據庫誤刪除數據的恢復 http://www.cnblogs.com/dudu/archive/2011/10/15/sql_server_recover_deleted_records.html
高版本sqlserver恢復工具 ApexSQL Log,要收費,聽說有破解版,淘寶有售 https://www.apexsql.com/sql_tools_log.aspx