1. 程式人生 > >SQL Server 2008 誤刪除資料的恢復

SQL Server 2008 誤刪除資料的恢復

    前言

    在平時大家用到SQL Server的時候很多,也經常會對其進行各種操作,簡單的資料查詢或新增還沒什麼問題,頂多就是新增錯誤直接刪除就可以了,但如果你操作的是重要的資料庫,而且庫中有著重要的資料,更甚至你還進行了update、delete操作,那該怎麼辦呢?

    小編犯的錯誤也是不可饒恕的,一句忘記加where條件的update一執行,把一千多條重要資料作廢了,小編還真是嚇了個不輕,還好花費了些時間補救了。只是通過各路搜尋,小編沒有找到update後的恢復辦法,卻找到一個delete的,這也是很寶貴的,寶貴的東西最好的辦法就是記錄下來~~~

    解決方案

     SQL Server中誤刪除資料的恢復需要有兩個前提條件:

      1. 至少有一個誤刪除之前的資料庫完全備份。

      2. 資料庫的恢復模式(Recovery mode)是“完整(Full)”。

    那麼問題來了,如何檢視資料庫的恢復模式呢?

     檢視或更改資料庫恢復模式

     1.連線到相應的 SQL Server 資料庫引擎例項之後,展開“資料庫”;

     2.右鍵單擊所要進行操作的資料庫,再選擇“屬性”,開啟“資料庫屬性”對話方塊;

     3.在“選擇頁”窗格中,單擊“選項”;

     4.當前恢復模式顯示在“恢復模式”列表框中;

     5.在列表中就可以選擇不同的模式來更改恢復模式啦~~~

     在這裡:


    詳述

    繼續說如何解決delete的問題。針對前面所說的兩個前提條件,會有三種情況:

    情況一、如果這兩個前提條件都存在,那就好說啦!

    這個就很簡單了,直接把現在已經錯誤的資料庫刪掉,將之前備份好的資料庫還原即可,省時省力。

    情況二、如果第1個前提條件不存在,第2個前提條件存在,需要藉助第三方工具。

    情況三、如果第2個前提條件不存在,那就真的是無法恢復了。

    所以,一定要將資料庫恢復模式設定為“完整(Full)”。

    第三方工具恢復

    根據搜尋的情況看,第三方工具有多種,比如:Log Explorer for SQL Server、

SQL Log Rescue 、SysTools SQL Recovery 、Recovery for SQL Server ;但前兩種不支援SQL Server 2008;第三種支援,但需要購買,Demo版沒有資料恢復功能;而Recovery for SQL Server,雖然也是商業軟體,需要購買,但Demo版可以恢復資料,只要資料庫檔案不超過24Gb。

    Recovery for SQL Server操作

    用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, 然後就完成資料的恢復!


    只是這個方案還是有些瑕疵的,通過搜尋,這個方案確實是可以恢復資料的,只是恢復之後的資料變成了DEMO型,還需要大家手動稍作修改。

    由於本方案是針對SQL Server 2008來解決的,小編的SQL Swrver為2012版本,所以以上過程小編沒有實戰,還期待大家誰有機會嘗試了告知小編哦!

    總結

    通過這次小編著實是長記性了,資料庫一定要多做備份,常做備份;而且還是不要輕易拿含有重要資料的庫來進行操作,有個測試庫最好了。大家也就吸取小編的經驗教訓,認真對待資料庫,資料無價,容不得失誤!

    所以,做為程式設計師,做資料除錯的時候,必須要先備份資料庫!