飞龙博客

妙法莲华经

误删SQL Server数据用LogExplorer恢复数据库技巧

feilong.org 修订于2009-11-19 04:28:37

  参考一:恢复误删数据(SQL Server 2000)用Log Explorer不小心把客户那边的数据库中删了一千多条数据,之前又没有备份,很郁闷,后来在网上找到一工具(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 mastergosp_configure 'allow updates',1 reconfigure with overridegoupdate sysdatabases set status =32768 where name='置疑的数据库名'gosp_dboption '置疑的数据库名', 'single user', 'true'godbcc checkdb('置疑的数据库名')goupdate sysdatabases set status =28 where name='置疑的数据库名'gosp_configure 'allow updates', 0 reconfigure with overridegosp_dboption '置疑的数据库名', 'single user', 'false'go参考资料:http://blog.54master.com/html/54/t-124154.html  参考四:如何恢复PF中被误删除的记录?  日志(Journal)的概念相当于其它关系数据库的日志(LOG),通常如果事务型应用需要提交/回滚(Commit/Roll Back)时,数据库的表是需要日志的。另外,如果表上定义了触发器、参照完整性(Referential Integrity),表也需要日志的。ITS qingzhouDB2 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 images"的"*BOTH"选项,即除了缺省的"After Images"还要包含"Before Images".4、先查询目前记录情况,共75条记录。=> RUNQRY *N LIU/EXECTL5、测试:通过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   explorerlog   explorer 下载地址http://www.ttdown.com/softdown.asp?id=14562http://www.yiii.net/app/servlet/net.yiii.club.downloadservlet?information_id=i00023471解压缩密码:www.heibai.nethttp://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 fileb、在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 server5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用数据库的脚本创建一个新的数据库,并将数据导进去就行了.具体其它方法参考资料  http://tech.ccidnet.com/art/11217/20070820/1183667_1.html

更新网址:http://feilong.org/splserver-logexplorer-datebase-deleted-backup-restore
最初发布:20080316 08:38:29 feilong.org 于广州

加入收藏夹,查看更方便。

所在分类: 网站开发

新作:

旧文:

飞龙前端QQ群