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

相关文章
相关标签/搜索