点击上方SQL数据库开发,关注获取SQL视频教程

SQL专栏

SQL数据库基础知识汇总

SQL数据库高级知识汇总

经常有小伙伴遇到不小心误删除数据的问题,今天我们先来介绍一款工具,可以快速恢复被误删除的数据。它就是Log Explorer 4.2,可以点击文末的“阅读原文”获取该工具。

工具介绍

Log Explorer主要用于对MS SQL Server的事务分析和数据恢复。可以浏览日志、导出数据、恢复被修改或者删除的数据(包括执行过update,delete,drop和truncate语句的表格)。一旦由于系统故障或者人为因素导致数据丢失,它能够提供在线快速的数据恢复,最大程度上保证恢复期间的其他事务不间断执行。

他可以支持SQLServer7.0和SQL Server2000以及SQL Server2005(注意Log Expolorer 4.2不支持SQL Server 2008及以上版本。2008及以上版本我们之后会告诉大家如何恢复)提取标准数据库的日志文件或者备份文件中的信息。

软件安装

运行安装包内Intel文件夹内的Setup.exe文件,如图1-1

图1-1

可以选择安装客户端和服务器端,服务器端必选安装在服务器上。点击【下一步】如图1-2

图1-2

输入注册码,点击【下一步】如图1-3

图1-3

选择安装位置,点击【下一步】如图1-4

图1-4

选择要安装服务器端的计算机以及输入本地数据库的账号密码,点击【下一步】进行安装。完成后依次点击【开始】→【程序】→【Lumigent】→【Log Explorer for SQL Server】→【Log Explorer】打开Log Explorer如图1-5

图1-5

点击左边菜单栏中的【附加日志文件】或者点击【文件】→【附加日志文件】打开连接数据库窗口,如图1-6

图1-6

选择要连接的数据库及登录方式(数据库需安装Log Explorer服务器端),然后点击【连接】连接成功后会出现选择数据库界面,如图1-7

图1-7

选择要连接的数据库,然后选择要打开的日志,可以使用在线日志也可以使用备份日志文件,点【附加】附加成功后会出现如图1-8界面

图1-8

删除的恢复操作

先通过SQL语句在test数据库中新建一个表,此时表为8495行,如图2-1。执行delete语句进行删除,删除109行如图2-2

图2-1

图2-2

打开log explorer,并连接到test数据库,打开查看日志拉到最下面可以看到刚才删除操作的信息

如图2-3

右键单击该行选择撤销事务,会生成撤销事务的脚本,如图2-4.复制该脚本到查询分析器中,并执行结果如图2-5、2-6,数据完整的恢复了

图2-4

图2-5

图2-6

用上述方法同样可以恢复UPDATE,和INSERT引起的数据库改变

数据库表删除的恢复操作

执行如下删除语句如图3-1

图3-1

打开【查看DDL命令】点击【刷新】图标如图3-2

图3-2

找到删除表的记录并单击选定,然后点击下面的【挽救】成功后会显示如图3-3界面

图3-3

然后将通过【运行SQL命令】功能执行该脚本,成功执行后(失败为0)在查询分析器中就可以查到刚删除的表已经完全恢复如图3-4,3-5。

图3-4

图3-5

也可以通过【从备份恢复表】的功能来找回删除的表,在输入表名和选择备份的文件后点击【创建】就可生成恢复被删除表的脚本如图3-6

图3-6 

常见问题

 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、撤销UPDATE操作时生成的脚本是先删除更新的行然后再插入,所以要把跟该表相关的所有约束用nocheck暂时关闭后再执行脚本

5、数据的恢复越早越好这个软件的可靠性还是很高的,我试过update九万行数据,它都完全的把修改过的给撤销回来了

6、误删除表时用【查看DDL命令】中的【挽救】功能比其他方法更方便些

7、数据库较大时查询和恢复会很慢

8、数据无价,操作需谨慎!

每个日志记录包含一个操作代码,操作代码表示日志的操作

FORMAT_PAGE--写新分配数据页的表头

INSET_ROWS--在用户表或系统表插入行

DELETE_ROWS-从表里删除行

MODIFY_ROW--使用Update命令更新行

MODIFY_HEADER--SQLSERVER分配新数据页,初始化页表头

MODIFY_COLUMNS--使用Update命令更新行

DELTA_SYSIND--SYSINDEXES系统表被修改

DELETE_SPLIT--行移动到新物理页,并从原物理页删除这些行

FILE_HDR_MODIF--SQLSERVER增长数据文件大小

BEGIN_XACT--启动一个事务

COMMIT_XACT--提交一个事务

ABORT_XACT--回滚一个事务

MARK_SAVEPOINT--程序发布'SAVE TRANSACTION'命令

MARK_DLL--表结构被修改

BEGIN_CKPT--启动一个检查点

XACT_CKPT--在执行检查点时打开事务

END_CKPT--执行完检查点

SORT_BEGIN--创建索引时执行排序

SORT_END--创建索引时排序完成

CREATE_INDEX--创建一个索引

DROP_INDEX--删除一个索引

天气转冷了,小伙伴们注意防寒保暖呀!

有需要的可以点击“阅读原文”获取,提取码:ud1n

推荐阅读

(点击标题可跳转阅读)

技术交流请加QQ群:875156894

看完本文有收获?请转发分享给更多人

长按识别二维码,

回复进群,拉你进微信群

更多推荐

SQL Server如何恢复被误删除(Delete)的数据-工具篇