日期:2014-05-18  浏览次数:20648 次

SQL-SERVER delete了。请问怎么恢复?没有备份
SQL-SERVER delete了。请问怎么恢复?没有备份

如题。干活的不小心没选上WHERE整个表数据删了。请达人解答啊。

------解决方案--------------------
SQL code
使用Log Explorer查看和恢复数据 

Log Explorer 4.1.可用于SQL Server2005的日志查看工具

下载地址:
http://download.csdn.net/source/620271

使用方法:

打开Log Explorer -> Attach Log File -> 选择SQL Server服务器和登陆方式 -> Connect -> 
在Database Name中选择数据库 -> Attach-> 左面对话框中Browse-> View Log-> 就可以看到log记录了 

想恢复的话: 右键Log记录 Undo Transation-> 选择保存文件名和路径-> 然后打开该文件到查询分析器里执行 
T-sql代码就可以了 

例如 如果Log是delete table where ...的话,生成的文件代码就是insert table .... 
     然后将此insert table的代码放到查询分析器里执行.就可以恢复数据.


----------------------------------
--如何恢复被delete/update的数据
----------------------------------  
1 连接到被删除数据库的Db
打开log explorer  选择  "file"->"attach log file"->选择服务器和登陆方式->"connect"->选择"数据库"->"attach"
2   查看日志
 在左面操作项目的对话框中选择"browse"项目->"view log"->就可以看到当前的Log记录了
3   恢复数据
     右键某一条log记录,选择"undo transation"->"选择保存文件名和路径"->然后打开该文件到查询分析器里执行
T-sql代码就可以了
例如: 如果log是delete table where ...的话,生成的文件代码就是insert table ....




----------------------------------
--Log Explorer恢复被drop table和truncate table后的数据
----------------------------------
1  连接到被删除数据库的Db
     操作同上
2   恢复方法
    1)  选择"salvaage dropped/truncate"菜单,在右边的对话框中选择表名,和droped/trucated的日期,
    File Name中选择生成insert语句脚步的存放位置,condition选择是droped还是truncated,
    最后点击"create" 就会生成insert语句,把生成的语句到查询分析器里面执行一下就可以了
    2) 选择"ViewDDL Commands"菜单->选"truncate table" 操作项->点击"Salvage"->生成语句->查询分析器里执行


----------------------------------
--log explorer使用的几个问题
----------------------------------
1) 对数据库做完全/差异/日志备份
备份时如果选用了删除事务日志中不活动的条目
再用Log explorer打试图看日志时,提示No log recorders found that match the filter,would you like to view unfiltered data 选择yes 就看不到刚才的记录了

如果不选用了删除事务日志中不活动的条目
再用Log explorer打试图看日志时,就能看到原来的日志并做恢复
2)  修改了其中一个表中的部分数据,此时用Log explorer看日志,可以作日志恢复
3)  然后恢复备份,(注意:恢复是断开log explorer与数据库的连接,或连接到其他数据上,
否则会出现数据库正在使用无法恢复)
恢复完后,再打开log explorer 提示No log recorders found that match the filter,would you like to view unfiltered data,选择yes 就看不到刚才在2中修改的日志记录,所以无法做恢复.
4)  不要用SQL的备份功能备份,搞不好你的日志就破坏了.

正确的备份方法是:
停止SQL服务,复制数据文件及日志文件进行文件备份.

然后启动SQL服务,用log explorer恢复数据

------解决方案--------------------
SQL code

/*
标题:Log Explorer for SQL Server v4.0.2的下载地址和使用说明
作者:爱新觉罗·毓华 
时间:2008-07-14
地点:新疆乌鲁木齐
资料来源:http://topic.csdn.net/u/20090305/00/849723bf-74ad-495f-8fc6-22d2108beb10.html?seed=1633183628
*/

1、Lumigent Log Explorer for SQL Server v4.0.2 特别版下载地址
   http://down.chinaz.com/soft/7887.htm
   Log Explorer for SQL Server 4.2 注册码 
   wv5rc-uxvpz-e33-nr4694qs2 

2、Log Explorer for SQL Server v4.0.2 
   安装完毕后,注册该程序(压缩文件有注册机) 
   打开log explorer file=>attach log file->选择服务器和登陆方式->connect-> 
   选择数据库->attach->左面对话框中browse->view log->就可以看到log记录了 
   点击“View DDL Commands”里面就有很多drop table 命令 
   点击下面的“undo”按钮是生成表结构的语句(create table ....) 
   点击下面的“Salvage”按钮是生成插入语句的(insert into ...values....) 
   想恢复的话: 右键log记录 undo transation->选择保存文件名和路径->然后打开该文件到查询分析器里执行T-sql代码就可以了 

   例如 如果log是delete table where ...的话,生成的文件代码就是insert table .... 

   log explorer使用的几个问题 
   1)、对数据库做了完全、差异和日志备份 
       备份时选用了删除事务日志中不活动的条目 
       再用Log explorer打试图看日志时 
       提示No log recorders found that match the filter,would you like to view unfiltered data 
       选择yes,就看不到刚才的记录了 
       如果不选用了删除事务日志中不活动的条目 
       再用Log explorer打试图看日志时,就能看到原来的日志 
   2)、修改了其中一个表中的部分数据,此时用Log explorer看日志,可以作日志恢复 
   3)、然后恢复备份,(注意:恢复是断开log explorer与数据库的连接,或连接到其他数据上, 
       否则会出现数据库正在使用无法恢复) 
       恢复完后,再打开log explorer 提示No log recorders found that match the filter,would you like to view unfiltered data 
       选择yes,就看不到刚才在2中修改的日志记录,所以无法做恢复. 
   4)、不要用SQL的备份功能备份,搞不好你的日志就破坏了. 
       正确的备份方法是: 
       停止SQL服务,复制数据文件及