sql2008日志删除后怎么恢复数据库

如题所述

SQL Server中误删除数据的恢复本来不是件难事,从事务日志恢复即可。但是,这个恢复需要有两个前提条件:

1. 至少有一个误删除之前的数据库完全备份。

2. 数据库的恢复模式(Recovery mode)是“完整(Full)”。

针对这两个前提条件,会有三种情况:

情况一、如果这两个前提条件都存在,通过SQL语句只需三步就能恢复(参考文章),无需借助第三方工具。

  a) 备份当前数据库的事务日志:BACKUP LOG [数据库名] TO disk= N'备份文件名' WITH NORECOVERY

  b) 恢复一个误删除之前的完全备份:RESTORE DATABASE [数据库名] FROM DISK = N'完全备份文件名' WITH NORECOVERY, REPLACE

  c) 将数据库恢复至误删除之前的时间点:RESTORE LOG [数据库] FROM DISK = N'第一步的日志备份文件名' WITH STOPAT = N'误删除之前的时间点' , RECOVERY

情况二、如果第1个前提条件不存在,第2个前提条件存在,需要借助第三方工具。

情况三、如果第2个前提条件不存在,无法恢复。所以,一定要将数据库恢复模式设置为“完整(Full)”。

我现在面临的是第二种情况,需要找第三方工具。

开始找的是Log Explorer for SQL Server,不支持SQL Server 2008。

后来找的是SQL Log Rescue,也不支持SQL Server 2008。

接着找到的是SysTools SQL Recovery,支持SQL Server 2008,但需要购买,Demo版并没有数据恢复功能。

最终在officerecovery.com上找到Recovery for SQL Server,虽然也是商业软件,需要购买,但Demo版可以恢复数据,只要数据库文件不超过24Gb。幸好朋友的数据库文件不大,用它完成了误删除数据的恢复。

下面分享一下用Recovery for SQL Server进行恢复的操作步骤:

1. 运行Recovery for SQL Server

2. 点击菜单中的 File > Recover,选择要恢复的数据库的数据文件(.mdf)

3. Next > Next,进入 Recovery Configuration 界面,选择Custom(选择了Custom才可以选择从日志中恢复误删除的数据)。

4. Next 进入 Recovery options 窗口,选中 Search for deleted records,并选择要恢复的数据库的日志文件路径(log file path)。

5. Next 并选择目标文件夹(Destination folder),用于存放恢复过程中生成的SQL语句与bat文件。

6. 点击Start,开始恢复操作(在上一步选择的目标文件夹中生成相应的SQL文件与Bat文件),然后,出现 SQL Server Database Creation Utility 窗口。

7. Next,选择被恢复数据存放的目标数据库。

8. Next, 选择 Import availiable data from both database and log files

9. Next, Next, 然后就完成数据的恢复!
温馨提示:内容为网友见解,仅供参考
无其他回答

sql2008日志删除后怎么恢复数据库
a) 备份当前数据库的事务日志:BACKUP LOG [数据库名] TO disk= N'备份文件名' WITH NORECOVERY b) 恢复一个误删除之前的完全备份:RESTORE DATABASE [数据库名] FROM DISK = N'完全备份文件名' WITH NORECOVERY, REPLACE c) 将数据库恢复至误删除之前的时间点:RESTORE LOG [数据库] FROM ...

sql server 2008 日志文件有什么用
第一种比较简单,在操作数据库的时候,首先用begin tran语句显式的标记一个事务,然后删除数据,如果确定需要恢复,则执行rollback tran语句,删除操作就会被回滚。使用begin tran语句标记事务,如果不需要回滚,则使用commit tran进行提交,提交后就不能再回滚了。第二种方法是通过还原数据库的方式,大致步...

SQL Server 2008数据库中的记录用delete语句删除后能否恢复
呵呵,如果你有删除之前做过备份,那么可以从备份里面恢复。如果你的数据库模式是完全或者大容量日志,也可能可以恢复,据说可以从日志中恢复数据,但是,我不知道方法。一般操作之前,可以先按delete的条件select一次数据,符合要求后再改成delete。或者干脆先将要delete的数据select into一张临时表,检查无误...

sql 2008 怎么还原日志
1.连接到相应的 Microsoft SQL Server 数据库引擎实例之后,在对象资源管理器中,单击服务器名称以展开服务器树。2.展开“数据库”。根据具体的数据库,选择一个用户数据库,或展开“系统数据库”并选择一个系统数据库。3.右键单击数据库,指向“任务”,再单击“还原”。4.根据要还原数据备份还是仅还...

SQL 2008 系统数据库 master中的部分表被我手动删除了 求恢复master
1. 使用\\PRogram Files\\Microsoft SQL Server\\80\\Tools\\Binn目录下的rebuidm.exe文件重建master数据库。重建master数据库可以使你的数据库文件完整无缺。为以防万一,经常把数据和日志文件备份到一个单独的目录是个不错的主意。2. 使用-m参数启动SQL Server,这样可以以单用户模式重新启动SQL Server。3....

日志文件丢失或出错的情况下如何恢复SQL数据库
1. 新建数据库(同名)2. 停掉数据库 3. 删除新建数据库的日志文件,用要恢复的覆盖mdf文件 4. 启动数据库服务器 5. 设置数据库允许直接操作系统表 6. 设置数据库为紧急修复模式 update sysdatabases set status=-32768 where dbid=DB_ID('dbDataHome')7. 重建数据库日志文件 dbcc rebuild_log(...

误删SQL日志文件怎么办
A.我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL Server Enterprise Manager里面建立。B.停掉数据库服务器。C.将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data.mdf。D.启动数据库服务器。此时会看到数据库test的状态...

sql server 2008里,如果数据库只有一个.mdf的数据文件了,没有.ldf...
很简单的,不用管.ldf文件就好了 看 可以看到这里也写着not found, 说明这个log 文件不存在 你只要选 中这项然后点Remove(移除)就好了 然后再点ok,就加进去 了

sqlserver2008日志清除后,数据库反映非常慢
1、先分离数据库,到数据库存放目录更改一下日志文件名称。2、进行附加,会报错。提示找不到日志文件,没有关系,在下方的表格中删除这个日志文件,点击确定,附加成功!3、sql server 2008 r2 会自动为找不到日志文件的数据库添加一个日志文件,最后在数据库属性页中设置一下数据库的最大限制就可以了...

sql 怎么用日志文件恢复数据
--保存删除表的时间 SELECT dt=GETDATE() INTO GO --在删除操作后,发现不应该删除表 Db.dbo.TB_test --下面演示了如何恢复这个误删除的表 Db.dbo.TB_test --首先,备份事务日志(使用事务日志才能还原到指定的时间点)BACKUP LOG Db TO DISK='c:\\db_log.bak' WITH...

相似回答