加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sqlserver 还原到时间点

发布时间:2020-12-12 15:30:54 所属栏目:MsSql教程 来源:网络整理
导读:? 今天一不冷静就把sqlserver数据库初始化了,在网上找了半天发现了几篇帖子,受益非浅,记录下 DB2中可以使得数据库回复到指定的时间点,SQL Server数据库的Recovery Model为full 或者Bulk copy的时候,是可以从日志来恢复数据库的。实际上日志中记录的一条

?

今天一不冷静就把sqlserver数据库初始化了,在网上找了半天发现了几篇帖子,受益非浅,记录下 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. 摘自 http://www.bentium.org/ReadNews.asp?NewsID=259

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读