sql數據刪除後恢復

sql數據刪除後恢復  

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

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

  然後點Attach,進入界面:可以看到左邊菜單中有很多功能,我們要恢復數據,首先要查看日誌,找出誤操作的那些日誌記錄,點Browse下的ViewLog:

  這樣我們看到對於這個數據庫的所有操作日誌,我們可根據日期等條件來過濾出我們需要的:

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

  我們來看一下導入到SQL的情況,首先點ExportToSQL選項:輸入Database及Table的名稱,然後Finish。

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

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

  由於大小已超過限制,沒有將工具傳上來,不過網上有很多地方提供下載,假如你需要,請留下Email。(網絡人  asp教程網)

  參考資料: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綠屏方式。

  1、創建日誌接收器

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

  2、建立日誌

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

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

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

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

  4、先查詢目前記錄情況,共75條記錄。

  => RUNQRY *N LIU/EXECTL

  5、測試:通過STRDFU刪除LIU/EXECTL記錄5條,然後再次查詢情況,僅剩下70條記錄。

  6、利用RMVJRNCHG命令恢復記錄

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

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

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

  如果想刪除日誌及日誌接收器,需要按照如下步驟實施。

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

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

  2、刪除日誌

  ===> DLTJRN JRN(LIU/LIUJRN)

  3、刪除日誌接收器

  ===> 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。步驟如下:

  1、查看日誌

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

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

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

  2、恢復數據庫

  這時您只要選擇您要恢復對事件點,右鍵點擊選擇”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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章