欢迎光临
我们一直在努力

从日志中恢复SQL Server数据库到时间点-数据库专栏,SQL Server

建站超值云服务器,限时71元/月

author:david euler
date: 2004/10/16
email:de_euler-david@yahoo.com.cn

有任何问题,请与我联系:)

         db2中可以使得数据库回复到指定的时间点,sql server数据库的recovery model为full 或者bulk copy的时候,是可以从日志来恢复数据库的。实际上日志中记录的一条一条的transact sql语句,恢复数据库的时候会redo这些sql语句。
  
前提条件:mybbs是数据库test中的一个表,

          数据库test的recovery model为full,auto close,auto shrink两个选项未选中。

          数据库test的data files和log files均为默认的自动增长状态。

a:2004/10/13,16:00进行数据库备份,backup database test to disk=d:\db\1600.bak with init

b:2004/10/14,13:00对数据库进行了update,delete等操作;

c:2004/10/15,18:00使用delete mybbs where id>300时,语句误写成delete mybbs,因而删除了表mybbs中的所有数据。

 

现在在c点,c点对数据库进行了误操作,我们希望数据库能够恢复到c之前的状态,比如恢复到10月15日17:59分的状态。

要恢复数据库b点,使用的是a点备分的数据库1600.bak;而使用的日志备分是最新的备分1820.logs;因而进行如下操作:

 

–备分日志:

backup log test to disk=d:\1820.logs with init

 

–恢复数据库1600.bak,使用with norecovery参数:

restore database test from disk=d:\db\1640.bak with norecovery

 

–使用日志恢复数据库到10月15日17:59分:

restore log test
        from disk=d:\1820.logs with recovery,stopat=10/15/2004 17:59

 

上面的三条transact sql语句的对应过程:

      1.恢复数据库到a点;

      2.执行a-b之间的log记录,把数据库恢复到b点.

 

 

       这样就恢复数据库到了指定的时间点。如果恢复不成功,可能的原因是:1.未使用正确的备分数据库;2.数据库选项选中了auto shrink.

 

 

 

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 从日志中恢复SQL Server数据库到时间点-数据库专栏,SQL Server
分享到: 更多 (0)