sql數據刪除後恢復

sql數據刪除後恢復  

  不當心把客戶那邊的數據庫中刪了一千多條數據,以前又沒有備份,很鬱悶,後來在網上找到一工具(Log Explorer),讓我躲過一劫。php

  首先看一下界面:輸入服務器地址,用戶名及密碼後點Connect,進入界面:在這裏選擇要恢復數據的數據庫,選擇UseOn-lineLog(假如你又備份文件的話就不須要用這個工具了,直接用SQL搞定了)。html

  而後點Attach,進入界面:能夠看到左邊菜單中有不少功能,咱們要恢復數據,首先要查看日誌,找出誤操做的那些日誌記錄,點Browse下的ViewLog:sql

  這樣咱們看到對於這個數據庫的全部操做日誌,咱們可根據日期等條件來過濾出咱們須要的:數據庫

  過濾日誌以後,就到導出數據這一步,這個工具提供了兩種方式,第一是導出到XML或HTML文件中(對應左邊菜單中的ExportToFile),第二是直接在數據庫中建新表,而後將數據導入(ExportToSQL)。服務器

  咱們來看一下導入到SQL的狀況,首先點ExportToSQL選項:輸入Database及Table的名稱,而後Finish。網絡

  這樣在你數據的數據庫中就會看到有這樣幾個表:TestTable TestTable_dll TestTable_details TestTable_Keys TestTable_Loginapp

  其中恢復的數據就在TestTable_details表中,不過數據格式已經變了,你還須要寫存儲過程或用其它方法把它導入到原來的表中。yii

  因爲大小已超過限制,沒有將工具傳上來,不過網上有不少地方提供下載,假如你須要,請留下Email。(網絡人  asp教程網)ide

  參考資料:http://www.knowsky.com/341437.html工具

  參考二:誤刪數據狀況下數據庫的恢復 

   昨天公司發生一個災難,日報系統SQLSERVER上的全部數據被一個冒失的傢伙所有刪除了。詢問管理員,居然從沒有作過備份。通過一翻查找,我在網上找到了一個很是有用的工具,能夠將數據庫的數據恢復到特定的時間點,固然前提條件是數據庫文件.MDF與日誌文件.LDF無缺。該工具是Lumigent公司的 Log Explorer,有SQLSERVER和ORACLE兩個版本。 hexin_2000

  用狗狗SEARCH,下載,安裝使用步驟以下:

  1)打開菜單上的 file=>attach log file->輸入服務器和登錄方式,點connect。

  2)下一步選擇要恢復的數據庫,這一步有兩個選項「Use on-line Log」和」use backup File」。由於公司的數據庫從未作過備份,我就只選擇了前者,點「attach」

  3)在左面的列表中會出現許多新功能

   Log Summary:日誌摘要。

   Load Analysis:日誌分析,會提供當前.LDF中用戶和TABLE的內容。

   Browse->view Log:這個最重要,顯示了步驟2)中加載的日誌詳細信息,若是你的數據被剛剛刪除,右鍵log記錄 undo transation->選擇保存文件名和路徑->而後打開該文件到查詢分析器裏執行T-sql代碼就能夠了。

  View DDL Commands:這個能夠看到執行過的DDL語句信息。

  由於我這裏數據庫中的數據全沒有了,因此我採用的是「Salvage Dropped/Truncated Data」,在「Table」中選擇要恢復的表,選擇恢復的時間,「Condition」條件選的是「Table was dropped」 ;選擇保存文件名和路徑後點「Create」,就將該時間點該表的數據所有導出了。而且該文件還考慮了表的「自增列」問題。而後打開該文件到查詢分析器裏執行T-sql代碼。

  若是表上存在觸發器,必定要將觸發器先關掉。

  該工具對於開發期間因爲SQL語句不當誤刪誤修改數據也很適用。

  還有一點問題,加載的日誌好象只包括了當前的日誌,對於已經存檔的沒有加載。

  參考資料:http://blog.tianya.cn/blogger/post_show.asp?BlogID=119560&PostID=1414115

 

  參考三:

  按下面的步驟處理:

  1.新建一個同名的數據庫

  2.再停掉sqlserver服務(注意不要分離數據庫);

  3.用原數據庫的數據文件覆蓋掉這個新建的數據庫;

  4.再重啓sqlserver服務;

  5.此時打開企業管理器時會出現置疑,先無論,執行下面的語句(注意修改其中的數據庫名);

  6.完成後通常就能夠訪問數據庫中的數據了。

  這時,數據庫自己通常還有問題,解決辦法是:利用數據庫的腳本建立一個新的數據庫,而後經過DTS將數據導進去就好了。

use master

go

sp_configure ‘allow updates’,1 reconfigure with override

go

update sysdatabases set status =32768 where name=’置疑的數據庫名’

go

sp_dboption ‘置疑的數據庫名’, ’single user’, ‘true’

go

dbcc checkdb(’置疑的數據庫名’)

go

update sysdatabases set status =28 where name=’置疑的數據庫名’

go

sp_configure ‘allow updates’, 0 reconfigure with override

go

sp_dboption ‘置疑的數據庫名’, ’single user’, ‘false’

go

  參考資料:http://blog.54master.com/html/54/t-124154.html

  參考四:如何恢復PF中被誤刪除的記錄?

  日誌(Journal)的概念至關於其它關係數據庫的日誌(LOG),一般若是事務型應用須要提交/回滾(Commit/Roll Back)時,數據庫的表是須要日誌的。另外,若是表上定義了觸發器、參照完整性(Referential Integrity),表也須要日誌的。ITS qingzhou

  DB2 for iSeries的表是能夠有日誌的,也能夠無日誌的。若是你用來建立的是Library而不是SQL的Collection,那麼建立於這個Library的表默認是沒有日誌的。反之,若是你用來建立的是SQL的Collection,那麼建立於這個Library的表默認是有日誌的;默認的日誌是QSQJRN,默認的日誌接收器是QSQJRN0001,用戶能夠更改這些默認屬性。

  如下就是經過日誌來恢復誤刪除PF記錄的一個事例,你能夠用Navigator方式進行建立日誌,若是習慣用5250仿真綠屏方式,也可使用CL命令來建立日誌,如下是以5250綠屏方式。

  一、建立日誌接收器

  => CRTJRNRCV JRNRCV(LIU/LIUJRNRCV) TEXT(’Liu’s Journal Receive’)

  二、創建日誌

  => CRTJRN JRN(LIU/LIUJRN) JRNRCV(LIU/LIUJRNRCV) TEXT(’liu’s Journal’)

  三、以LIU/EXECTL這個PF爲例,以*BOTH方式啓動日誌

  => STRJRNPF FILE(LIU/EXECTL) JRN(LIU/LIUJRN) IMAGES(*BOTH)

  爲了利用JRN進行修改回退,JRN必須啓用了參數」Journal p_w_picpaths」的」*BOTH」選項,即除了缺省的」After Images」還要包含」Before Images」.

  四、先查詢目前記錄狀況,共75條記錄。

  => RUNQRY *N LIU/EXECTL

  五、測試:經過STRDFU刪除LIU/EXECTL記錄5條,而後再次查詢狀況,僅剩下70條記錄。

  六、利用RMVJRNCHG命令恢復記錄

  => RMVJRNCHG JRN(LIU/LIUJRN) FILE((LIU/EXECTL))

  七、系統提示:Remove failed. 5 entries removed from *QDDS object.

  八、再次查詢LIU/EXECTL狀況,發覺被刪除的記錄已經恢復。

  若是想刪除日誌及日誌接收器,須要按照以下步驟實施。

  一、先解除日誌與PF文件的關聯

  ===> ENDJRNPF FILE(LIU/EXECTL) JRN(LIU/LIUJRN)

  二、刪除日誌

  ===> DLTJRN JRN(LIU/LIUJRN)

  三、刪除日誌接收器

  ===> DLTJRNRCV JRNRCV(LIU/LIUJRNRC

  參考資料:http://bbs.chinaunix.net/viewthread.php?tid=778391&extra=page%3D1%26amp%3Bfilter%3Ddigest

  參考五:數據誤刪,如何恢復?

  數據庫中有一表,名爲:info。本人用delete   info將表中的數據刪除了,提早沒有備份,請各位大蝦幫忙,如何恢復啊?

  網友回答:pengdali:log   explorer

  log   explorer 下載地址:http://www.ttdown.com/softdown.asp?id=14562

  http://www.yiii.net/app/servlet/net.yiii.club.downloadservlet?information_id=i00023471

  解壓縮密碼:www.heibai.net

  http://www.ttdown.com/softview_8647.htm    

  註冊機產生的是註冊碼,是兩個。用解壓縮密碼解開後,壓縮包裏也有一個註冊機的。

   

  1. 打開log explorer   file=>attach   log   file->選擇服務器和登錄方式->connect->

  2. 選擇數據庫->attach->左面對話框中browse->view   log->就能夠看到log記錄了。

  3. 想恢復的話:   右鍵log記錄   undo   transation->選擇保存文件名和路徑->而後打開該文件到查詢分析器裏執行 t-sql代碼就能夠了。(?)

  例如:若是log是delete、table、where…的話,生成的文件代碼就是insert   table   ….

  參考資料:http://www.hurun-food.com.cn/software/p708/A70887129.shtml

  參考六:怎樣把誤刪的表恢復?

  使用Log Explorer恢復數據。用日誌工具Log Explorer。步驟以下:

  一、查看日誌

  a、打開log explorer,選擇菜單File– >attach log file

  b、在Log File Selection窗口中,填寫鏈接到要恢復數據的數據庫服務器機器名、數據庫登陸ID及密碼,而後點擊」Connect」按鈕。

  c、若鏈接成功,則窗口左邊樹將顯示命令菜單,這時咱們點擊Browser下的View Log命令,此時窗口右邊則出現該數據庫的Log。

  二、恢復數據庫

  這時您只要選擇您要恢復對事件點,右鍵點擊選擇」undo transation」命令,保存T-SQL代碼,而後在查詢分析器中執行該T-SQL代碼

  注:刪除後做了數據庫備份,備份會截斷日誌。

  參考資料:http://bbs.51cto.com/thread-434144-1-1.html

  參考七:沒有日誌文件也能恢復數據庫的兩個方法

  方法一

  1.新建一個同名的數據庫

  2.再停掉sql server(注意不要分離數據庫)

  3.用原數據庫的數據文件覆蓋掉這個新建的數據庫

  4.再重啓sql server

  5.此時打開企業管理器時會出現置疑,先無論,執行下面的語句(注意修改其中的數據庫名)

  6.完成後通常就能夠訪問數據庫中的數據了,這時,數據庫自己通常還要問題,解決辦法是,利用

  數據庫的腳本建立一個新的數據庫,並將數據導進去就好了.

  具體其它方法參考資料:  http://tech.ccidnet.com/art/11217/20070820/1183667_1.html

相關文章
相關標籤/搜索