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