恢复每日差异备份 - 没有文件准备好前滚问题

Ome*_*mer 4 database sql-server backup backup-strategies database-backups

我使用 SQL Server。我的差异备份有问题。我在周末对数据库进行完整备份,此外,我还每天对数据库进行差异备份。我创建了一项工作,可以自动执行这些备份任务。拿完这些完整的和不同的 bakcups 后,我每天和每周都会用工作 schudelar 恢复它们。我的完整还原作业任务每周都会成功运行,但是当我的其他任务(即还原每日差异备份)尝试运行时,它会失败并显示“日志或差异备份无法还原,因为没有文件准备好前滚。”错误消息。

我有两个数据库服务器。其中一台是生产服务器,另一台是报告服务器。报告服务器包含与生产数据库服务器相同的数据库。每周结束时,我都会对生产数据库服务器中的数据库进行完整备份以用于报告服务器。同样,每个午夜,我也会对生产服务器中的数据库进行差异备份以用于报告服务器。第二天,我将最后一个差异恢复到报告服务器中的数据库。我使用可视化 cron 工具来执行该过程,但它因该错误而失败。我尝试恢复手动但收到相同的错误消息。

这是我的恢复命令。

EXEC [dbo].[DatabaseRestoreMany] 
    @Databases = 'DB_2004',
    @BackupRoot = '\\BCKPSRVR\BKUP\',
    @BackupTypes = 'DIFF',
    @DataFileDirectory = 'D:\DBFILES\DB_2004\',
    @LogFileDirectory = 'D:\DBFILES\DB_2004\',
    @DirectoryPerDatabase = 'Y',
    @RecoveryState = 'STANDBY',
    @ReturnBackupList = 'N',
    @ReturnTaskList = 'N',
    @Execute = 'Y'
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?你能帮助我吗?

先感谢您。

sep*_*pic 8

您收到此错误是因为full backup在从 恢复之前没有恢复任何内容differential backup。

今天是星期三。我在周日恢复了数据库的完整备份。

您使用recovery恢复了完整备份。您的数据库已开始运行,现在online不再可用log或differential backup无法恢复。

为了恢复你的,differential backup你应该先恢复你full backup 的norecovery,然后你才能恢复你的differential backup。

请参阅这篇 BOL 文章了解如何还原差异备份:还原差异数据库备份 (SQL Server)

恢复差异数据库备份

执行 RESTORE DATABASE 语句并指定 NORECOVERY 子句,以还原差异数据库备份之前的完整数据库备份。有关详细信息,请参阅如何:还原完整备份。

执行 RESTORE DATABASE 语句恢复差异数据库备份,指定:

应用差异数据库备份的数据库的名称。

从中恢复差异数据库备份的备份设备。

NORECOVERY 子句(如果在差异数据库备份恢复后要应用事务日志备份)。否则,指定 RECOVERY 子句。