如何日志备份还原

我们经常会误删一些数据,需要通过日志来进行还原,接下来就是处理这些的方法

一:先完全备份

二:日志备份

三:恢复到日志备份点

脚本:

  --DROP DATABASE Db

  CREATE  DATABASE   Db  

  GO  

 --对数据库进行备份  

  BACKUP  DATABASE   Db   TO  DISK='c:\db.bak'   WITH   FORMAT  

  GO  

 --创建测试表  

  CREATE  TABLE   Db.dbo.TB_test(ID   int)  

  SELECT GETDATE()

 --延时1秒钟,再进行后面的操作(这是由于SQL   Server的时间精度最大为百分之三秒,不延时的话,可能会导致还原到时间点的操作失败)  

  WAITFOR  DELAY   '00:00:10'  

  GO  

 -- DROP TABLE #

 --假设我们现在误操作删除了  Db.dbo.TB_test   这个表  

  DROP  TABLE   Db.dbo.TB_test  

 --保存删除表的时间  

  SELECT  dt=GETDATE()   INTO   #  

  GO  

 --在删除操作后,发现不应该删除表  Db.dbo.TB_test  

 --下面演示了如何恢复这个误删除的表  Db.dbo.TB_test  

 --首先,备份事务日志(使用事务日志才能还原到指定的时间点)  

  BACKUP  LOG   Db   TO  DISK='c:\db_log.bak'   WITH   FORMAT  

  GO  

 --接下来,我们要先还原完全备份(还原日志必须在还原完全备份的基础上进行)  

  RESTORE  DATABASE   Db   FROM  DISK='c:\db.bak'   WITH   REPLACE,NORECOVERY  

  GO  

 --将事务日志还原到删除操作前(这里的时间对应上面的删除时间,并比删除时间略早  

  DECLARE  @dt   datetime  

  SELECT   @dt=DATEADD(s,-20,dt)   FROM  #     --获取比表被删除的时间略早的时间  

  RESTORE  LOG   Db   FROM  DISK='c:\db_log.bak'   WITH   RECOVERY,STOPAT='2016-10-11 10:58:00.000'

  GO  

 

  USE Db

  SELECT * FROM TB_test

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值