难以在SQL Server中恢复差异备份,预计会有2个媒体系列,或者没有文件准备好进行前滚

时间:2010-05-26 08:01:38

标签: sql-server backup restore

我每晚都会将sql备份从服务器A复制到服务器B.

我们希望将sql server从服务器A移动到服务器B而不会造成太多停机,但文件非常大。

我认为执行差异备份和还原可以解决数据库的问题。

  1. 从服务器A复制完整备份以复制到服务器B(10 + gb)
  2. 在服务器B上打开SQL Server Managment Studio
  3. 鼠标右键数据库
  4. 还原数据库
  5. 输入新的数据库名称
  6. 选择“从设备”并浏览到备份文件
  7. 点击“确定”。现在正在使用原始的“完整”备份。
  8. 使用开发应用程序测试新数据库 - 一切正常:)
  9. 在DB上的原始数据库权利上>任务>备份...
  10. 备份类型=差异,备份到磁盘,添加新文件,并删除旧文件(它需要是一个小文件,以便在最小的中断时进行传输)
  11. 将差异备份复制到新数据库
  12. 右键在DB>任务>恢复>数据库
  13. 这是我被卡住的地方。如果我将新的差异文件和原始备份都添加到恢复过程中,则会出现错误

    The media loaded on "M:\path\to\backup\full.bak" is formatted to support 1 media families, but 2 media families are expected according to the backup device specification.
    RESTORE HEADERONLY is terminating abnormally.
    

    但是,如果我尝试仅使用我得到的差异文件进行恢复

    System.Data.SqlClient.SqlError: The log or differential backup cannot be restored because no files are ready to rollforward. (Microsoft.SqlServer.Smo)
    

    知道怎么做吗?有没有更好的方法来恢复有限停机时间的备份?

1 个答案:

答案 0 :(得分:5)

有关详细信息和代码,请参阅2008年联机丛书 执行完整数据库还原

可能错误是由备份设备规范尝试立即恢复的完整备份和差异备份引起的(可能需要更改)。

一次做一个(基本想法):

创建tail_log备份。

首先使用NORECOVERY恢复完整。

使用NORECOVERY恢复差异。

使用NORECOVERY恢复日志。

使用NORECOVERY恢复tail_log。

然后,完成所有操作后,使用RECOVERY进行恢复。