zoukankan      html  css  js  c++  java
  • [转]Sqlserver 数据恢复工具LogExplore 使用方法

    Log Explore 是sqlserver数据库的数据恢复工具。

    恢复原理:利用sqlserver数据库文件中,LDF日志文件记录数据库操作日志的原理,将其中的日志找到,并逆向执行。

    LogExplore使用方法:

    安装后打开log   explorer   file=>attach   log   file->选择服务器和登陆方式->connect->  
      选择数据库->attach->左面对话框中browse->view   log->就可以看到log记录,  
      点击“View   DDL   Commands”里面就有很多drop   table   命令  
      点击下面的“undo”按钮是生成表结构的语句(create   table   ....)  
      点击下面的“Salvage”按钮是生成插入语句的(insert   into   ...values....)   
        
      我是按照上述方法的“Salvage”来生成被删除表的Insert语句,实际上用这个方法生成的SQL脚本已经包含了CreateTable。该过程速度大概用了8个小时,当时觉得慢,后来相比恢复过程,这个速度简直快的不行。最大的表脚本生成后超过1G。  
       
      生成所有的SQL脚本后,防止万一,我将数据库停下,并把Date文件夹的Log和.MDF文件拷出来(怕破坏LOG文件,没有使用数据库的备份方式备份),文件大小总共为5.7G  
       
      此后开始进行正式的恢复工作。新建一个数据库,先试着用SQL查询分析器运行了一个小表的脚本,完全没有问题。但后来发现导入比较大的SQL脚本文件,查询分析器就报错了。请教了realgz得知logExplorer本身对大脚本有良好支持,因此改用LogExplorer--》Run   SQL   Script   功能来运行脚本。果然大文件也可以恢复了。  
       
      但开始运行后发现包含有ntext字段的表恢复起来异常缓慢,打开一个包含nText字段的表的恢复脚本发现里面使用writeText来写入数据。恢复一个30万数据的表居然用了将近12小时的时间,而数据库中又有大量这样的表,为了加快数据,我又在几个机器上装了LogExplorer加入恢复过程,终于经过3天的时间,全部的表都搞的差不多了,不过恢复过程有少量的错误。  
       
      接下来我将几个机器的表导到同一个数据库中,不过此时恢复的表是没有包含索引、标识等扩展属性的,因此需要重新建立索引、标识、默认值以及触发器。在建立主键的时候发现居然有数据重复。。。没办法只好删除重复数据。  
       
      使用   select   distinct   *   into   t_New   from   t_Old   可以删除重复数据,但遇到有ntext字段的表是不能用这个方法的,最后只好用   Delete   From   t_Table   Where   ID   IN   (Select   ID   From   t_Table   a   where   (Select   Count(*)   From   t_Table   a   where   a.ID   =   ID   )   >   1   )直接删除了有重复数据的记录  
       
      经过72小时的努力,99.9%的数据恢复。并于4月8日晚上恢复运行网站。  
       
      这时候部分用户反映无法登陆,一查发现是有小部分数据丢失,也就是LogExplorer里报错误的那些数据……没办法,我重新用UEdit打开SQL脚本,查找这些数据,发现还在,仔细一看发现,这些数据里都有部分内容里使用大量的回车,LogExplorer无法识别,因此才出的错误。  
       
      呵呵,顾客是上帝,没办法,只好将用户表重新在本地恢复一次,遇到错误就记录下ID,然后再考出SQL脚本到查询分析器运行(查询分析器可以运行)  
       
      现在建立了维护计划,每个星期做一次完整备份。另外操作数据库的流程也变的规范,防止此类事故出现  
       
    ************************************************************************************
      1、慎重使用Text/nText字段  
      2、LogExplorer的脚本执行工具对付大文件很不错,但执行过程会对多个回车产生误判断

  • 相关阅读:
    Codeforces 525C Om Nom and Candies 枚举 + 复杂度分析
    Codeforces 526B Om Nom and Dark Park 树形dp
    Codeforces 526A King of Thieves 枚举
    Regionals 2014 Asia
    Regionals 2014 Asia
    access数据库和sqlsever数据库sql语句的布尔值boolean的写法
    取消阴影行
    引用其他单元的2种方法
    选中阴影行
    全选
  • 原文地址:https://www.cnblogs.com/a311300/p/1674880.html
Copyright © 2011-2022 走看看