设为首页 收藏本站
查看: 1267|回复: 0

[经验分享] SQL Server 2005 从差异备份还原数据库

[复制链接]

尚未签到

发表于 2018-10-12 10:56:49 | 显示全部楼层 |阅读模式
  差异数据库还原的语法与完整数据库还原的相同,只是完整数据库还原必须要执行在附加差异备份之前。当还原完整数据库备份时,数据库必须置为NORECOVERY模式。而且任何你希望还原的事务日志必须在附加了差异备份之后完成。
  首先,我通过对test数据库执行完整备份、差异备份、事备日志备份来启动这个示例
  差异备份捕捉数据库在最后一次完整数据库备份之后发生的变化。差异还原使用了与完整数据库还原相同的语法,只是它们必须总是在完整数据库还原(设置NORECOVERY)之后。数据库最初从完整数据库还原,然后是差异备份的还原,最后是事务日志备份的还原。差异RESTORE命令的组成与完整RESTORE命令的相似,只不过它是基于差异备份文件的。在最后一次还原操作时,指定RECOVERY选项使数据库处于可用状态。
  SQL Server 2005 从事务日志备份还原数据库
  事务日志还原需要在完整数据库还原基础上进行,并且如果你应用了多个事务日志,必须按时间顺序应用它们(基于事务日志备份何时生成)。不按顺序应用事务日志或是在备份时有间隔都是不允许的。还原事务日志的语法用RESTORE LOG而不是RESTORE DATABASE,不过它们的语法和选项都是一样的
  事务日志还原需要在完整数据库还原基础上进行,并且如果你应用了多个事务日志,必须按时间顺序应用它们(基于事务日志备份何时生成)。不按顺序应用事务日志或是在备份时有间隔都是不允许的。还原事务日志的语法用RESTORE LOG而不是RESTORE DATABASE,不过它们的语法和选项都是一样的。
  在此创建了一个test的新数据库:
  数据库将执行一个完整备份和两个连续的事务日志备份:
  use master
  go
  create database test
  go
  select * into test.dbo.salesorderdetail from AdventureWorks.Sales.Salesorderdetail
  backup database test to disk='e:\test.bak'
  backup log test to disk='e:\test_log.bak'
  select * into test.dbo.Customer from AdventureWorks.Sales.Customer
  backup log test to disk='e:\test_log1.bak'
  执行还原:
  第一个RESTORE假定要还原到的数据库没有存在连接。在执行RESTORE之前踢掉所有在数据库上的连接:
  use master
  go
  alter database test set single_user with rollback immediate
  下一步,从备份中还原一个数据库备份和两个事务日志备份:
  restore database test from disk='e:\test.bak' with norecovery,replace
  --这时数据库提示正在还原,无法访问
  restore log test from disk='e:\test_log.bak' with norecovery,replace
  restore log test from disk='e:\test_log1.bak' with norecovery,replace
  2、原数据库和事务日志到指定的时间点
  首先做一个test数据库的完整备份和事务日志备份:
  下一步,从备份中还原数据库,为了也可以还原事务日志备份,我们使用了NORECOVERY选项:
  下一步,还原事务日志,还指定了在数据删除前一秒的时间(2005-10-14 20:18:57.583发生的删除操作):
  下一步,随后的查询确认你还原的数据库恰好发生在2005-10-14 20:18:57.583的数据删除操作之前:
  这个查询返回:
  228
  解析
  在此技巧的第一个示例中,从完整数据库备份中还原TrainingDB数据库,并将其置为NORECOVERY模式。置为NORECOVERY模式允许附加其他事务日志或差异备份。在这个示例中,按照时间顺序附加了两个事务日志备份,在使用RECOVERY选项的那一瞬间,数据库置为在线状态。
  此技巧的第二个示例演示了将数据库还原到一个指定时间点的操作。时点恢复在将数据库还原到数据库发生修改或是故障之前的时候是有用的。语法与前一个示例中的类似,只是在RESTORE DATABASE和RESTORE LOG中使用了STOPAT。每个RESTORE语句包含STOPAT确保了还原操作不会越过指定的时间恢复。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-620695-1-1.html 上篇帖子: SQL Server2008CPU性能监控 下篇帖子: 如何在linux下通过ODBC连接SQL SERVER数据库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表