今天一个朋友急着给我打电话。他用delete语句错误地删除了SQL Server 2008数据库中两个表的所有记录,但该数据库以前没有备份。让我帮他解决,不然他要给客户一大笔钱。
SQL Server中误删数据的恢复并不难,只需从事务日志中恢复即可。然而,这种复苏有两个先决条件:
1. 至少有一个误删除之前的数据库完全备份。
2. 数据库的恢复模式(Recovery mode)是“完全(Full)”。
对于这两个前提条件,会有三种情况:
情况一、
如果这两个前提条件都存在,那么只需要三步就可以通过SQL语句恢复(参考文章),不需要借助第三方工具。a)备份当前数据库的事务日志:BACKUP LOG[database name]TO disk=N BACKUP file name WITH no recovery。
b)在完全备份被错误删除之前将其还原:Restore DATABASE[DATABASE name]FROM DISK=N full backup file name WITH no recovery,REPLACE
c)将数据库恢复到错误删除之前的点:RESTORE LOG [database] FROM DISK=N 第一步的日志备份文件名 WITH STOPAT=N 错误删除之前的点,恢复
情况二、
如果第一个前提条件不存在,第二个前提条件存在,则需要第三方工具的帮助。情况三、
如果第二个先决条件不存在,则无法恢复。因此,请务必将数据库恢复模式设置为“完全(Full)”。
。现在面临第二种情况,需要找第三方工具。
我开始寻找SQL Server的日志浏览器,它不支持SQL Server 2008。
后来我在找SQL日志救援,它也不支持SQL Server 2008。
然后我找到了SysTools SQL Recovery,支持SQL Server 2008,但是需要购买。演示版没有数据恢复功能。
最后,在officerecovery.com上找到了
Recovery for SQL Server
。虽然也是商业软件,需要购买,但是演示版只要数据库文件不超过24Gb就可以恢复数据。还好朋友的数据库文件不大,我就用它来恢复误删的数据。下面分享一下SQL Server用recovery进行恢复的操作步骤:
1.为SQL Server运行恢复
2.单击菜单中的文件恢复,并选择数据文件(。mdf)文件。
3.接下来接下来,进入恢复配置界面,选择自定义(只能选择自定义来恢复日志中误删的数据)。
4.接下来进入恢复选项窗口,选择搜索已删除的记录,并选择要恢复的数据库的日志文件路径。
5.接下来,选择目标文件夹来存储恢复过程中生成的SQL语句和bat文件。
6.单击Start开始恢复操作(在上一步选择的目标文件夹中生成相应的SQL文件和Bat文件)。然后,将出现SQL Server数据库创建实用工具窗口。
7.接下来,选择存储恢复数据的目标数据库。
8.接下来,选择从数据库和日志文件中导入可用数据。
9.接下来,接下来,然后完成数据恢复!
接下来,庆祝胜利!庆祝胜利的最好方式就是写博客!身体