不當心把客戶那邊的數據庫中刪了一千多條數據,以前又沒有備份,很鬱悶,後來在網上找到一工具(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