zoukankan      html  css  js  c++  java
  • 从日志中恢复SQL Server数据库到时间点

             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.
  • 相关阅读:
    IOS开发-点击View取消键盘输入
    IOS读写Plist文件最简单方法
    谷歌眼镜Mirror app开发之简单新闻浏览页面
    Shell下获取Android设备信息
    PhpStrom与PyCharm的激活码
    python之数据类型的转换(eval,json.dumps,json.loads)
    网络安全基础2--网络协议,服务,安全
    网络安全基础1
    第二条用例需要用到第一条用例返回结果中的某些值
    python更新字典下嵌套数组下嵌套字典的值
  • 原文地址:https://www.cnblogs.com/tohen/p/2794831.html
Copyright © 2011-2022 走看看