在 SQL Server 中恢复差异备份很困难,需要 2 个媒体系列或没有文件可以进行前滚

在 SQL Server 中恢复差异备份很困难,需要 2 个媒体系列或没有文件可以进行前滚

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

我们希望将 SQL 服务器从服务器 A 移动到服务器 B,并且不需要太多的停机时间,但是文件非常大。

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

  1. 将完整备份从服务器 A 复制到服务器 B (10+gb)
  2. 在服务器 B 上打开 SQL Server Managment Studio
  3. 在数据库上单击鼠标右键
  4. 还原数据库
  5. 输入新的数据库名称
  6. 选择“从设备”并浏览到备份文件
  7. 点击“确定”。这将恢复原始的“完整”备份。
  8. 使用开发应用程序测试新数据库 - 一切正常:)
  9. 在原始数据库上单击鼠标右键,选择“DB”>“任务”>“备份...”
  10. 备份类型 = 差异,备份到磁盘,添加新文件并删除旧文件(它需要是一个小文件才能传输,以实现最少的中断量)
  11. 将差异备份复制到新数据库
  12. 鼠标右键单击数据库 > 任务 > 恢复 > 数据库

这就是我被困住的地方。如果我将新的差异文件和原始备份都添加到恢复过程中,我会收到错误

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

您必须使用 NORECOVERY 选项恢复完整备份,才能恢复后续差异备份。只有最后一次恢复才会使用 RECOVERY 选项。如果您需要每晚恢复前一个差异备份,差异恢复也必须使用 NORECOVERY 选项。在这种情况下,数据库 B 将始终处于非运行状态。

答案2

执行差异时,转到选项页面并选中“备份到新媒体集并删除所有现有备份集”单选按钮。

您正在某个地方对备份进行条带化。使用上述选项将在 DIFF 备份上使用 INIT 和 FORMAT 关键字。

相关内容