万达换票券 发表于 2018-10-12 10:56:49

SQL Server 2005 从差异备份还原数据库

  差异数据库还原的语法与完整数据库还原的相同,只是完整数据库还原必须要执行在附加差异备份之前。当还原完整数据库备份时,数据库必须置为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]
查看完整版本: SQL Server 2005 从差异备份还原数据库