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
|
例如:
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步错误提示)
解决办法 :
企业管理器--->当前数据库右键--->属性--->选项--->故障还原里的模型选非简单模式
2、服务器: 消息 3101,级别 16,状态 1,行 1
因为数据库正在使用,所以未能获得对数据库的排它访问权(第2步错误提示)
解决办法:
因为当前的数据库正在使用,所以先连接到Master 数据库,断开要恢复的数据库的所有连接(无法段开的就用kill),然后在Master 中再执行restore database click及第3步restore 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'
转自网络: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/