SQL利用数据库日志恢复数据到时间点的操作 -- 转自网络

SQL利用数据库日志恢复数据到时间点的操作
2009-08-18 08:45

1,如果误操作之前存在一个全库备份(或已有多个差异备份或增量备份),首先要做的事就是进进行一次日志备份(如果为了不让日志文件变大而置trunc. log on chkpt.选项为1那你就死翘了)
backup log dbName to disk='fileName'

也可以在误操作之后先进行全库备份,然后进行日志备份。例如:

backup database click to disk='d:clickdb.bak' ---数据库备份

backup log click to disk='d:clicklog.dbf' ----日志备份

这里要注意库备份和日志备份的先后顺序,颠倒顺序会出错:

服务器: 消息 4326,级别 16,状态 1,行 1
此备份集中的日志终止于 LSN 27000000033600001,该 LSN 太早,无法应用到数据库。包

LSN27000000033800001 的较新的日志备份可以还原。

2,恢复一个全库备份,注意需要使用with norecovery,如果还有其他差异或增量备份,则逐个恢复
restore database dbName from disk='fileName' with norecovery

[@more@]

例如:

restore database click from disk=''d:clickdb.bak' with norecovery

3,恢复最后一个日志备份即刚做的日志备份,指定恢复时间点到误操作之前的时刻
restore log dbName from disk='fileName' with stopat='date_time'

例如:

restore log click from disk='d:clicklog.dbf' width recovery,stopat='2007-06-27 12:15:50'

现在已经将日志前滚到合适的时间点,并使数据库可供使用。请注意,STOPAT在数据库正在执行大容量日志时禁止执行

另外注意:执行时可能会提示

1恢复模式不对,当前模式为简单,要用alter database修改恢复模式的错误(第3步错误提示)

解决办法

企业管理器---&gt当前数据库右键---&gt属性---&gt选项---&gt故障还原里的模型选非简单模式

2服务器: 消息 3101,级别 16,状态 1,行 1
因为数据库正在使用,所以未能获得对数据库的排它访问权(第2步错误提示)

解决办法:
因为当前的数据库正在使用,所以先连接到Master 数据库,断开要恢复的数据库的所有连接(无法段开的就用kill),然后在Master 中再执行restore database click及第3restore log click

实例:

1.进行一次完整备份

backup database test to disk='d:test.bak'

2.删除test2表中的内容 时间是 2008-05-12 15:53:50
delete from test..test2

3.备份操作后的事务日志
backup log test to disk='d:testlog.trn'

4.恢复开始的完整备份
restore database test from disk='d:test.bak' with norecovery

5.恢复删除操作后的事务日志,时间指定到删除前的某个时间 2008-05-12 15:53:45
restore log test from disk='d:testlog.trn' with recovery,stopat='2008-05-12 15:53:45'

6. 查看 test2 表中的内容 , 和删除前完全一样

转自网络:http://hi.baidu.com/wferp/blog/item/a5775013c2ff3c0b5aaf5331.html

http://hi.baidu.com/anydb/blog/item/5e1ac6ed512df8e4cf1b3e60.html

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/789833/viewspace-1039965/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/789833/viewspace-1039965/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值