今天下午接到大张老师电话,问能不能恢复SQL Server中已经被删除的一条记录,忽然想起若干年前牙牙老师也问过我这个问题,于是放狗搜索了下,找到了解决方案。
因为SQL Server是基于日志管理的数据库系统,每一笔操作都有详细的日志作为记录,这为我们做恢复提供了非常有利的先决条件,通过搜索引擎,我查找到了一款名为“LogExplorer”的商业软件,可以对SQL Server的日志进行分析,并通过日志恢复数据。
这是一款商业软件,未注册版本可以使用30天,安装的时候需要同时安装客户端及服务器端。软件运行界面如下图。
而我们要做的非常简单,点击左侧的“View Log”即可查询所有的日志信息,如下图:
因为我们的日志数量非常多,而日志中又记录了全部的CRUD操作,我们只想筛选某一时间的某种操作,怎么办呢,很简单,点选上图工具栏的第一个图标即可。点击之后,他会让你选择筛选条件,如下图:
除了可以设置筛选的时间之外,我们还可以按照操作进行筛选~如下图:
在这里我仅仅针对删除的记录做筛选,从上图中看出,我们几乎可以对所有的操作进行筛选~筛选完成点击“Apply”。系统便会给出我们筛选结果~
经过我们的筛选,列表中只剩下一条记录啦,经查,这条记录就是被我们误删的记录。那我们想要恢复这条记录,也只是仅仅需要在记录上面点右键,选择“Undo Transaction”如下图。
他的恢复并不是直接作用于数据库,而是生成对应操作的逆操作脚本,所以在选择“Undo Transaction”之后,系统会让你给出脚本的保存位置。系统导出的脚本如下:
最后再通过SQL Server自带的查询分析器执行生成的脚本,即可恢复记录。
更多关于Log Explorer的使用,可以参考:
SQL Server不懂太高深了…… ➡
😉 好东西,谢谢分享