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

Restoring Daily Differential Backup - No Files Are Ready To Rollforward Issue

我使用SQL服务器。我的差异备份有问题。我在周末对我的数据库进行完整备份,此外,我还每天对数据库进行差异备份。我创建了一个自动执行这些备份任务的工作。在拿完那些完整的和不同的 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'

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

提前致谢。

您遇到此错误是因为在从 differential backup 恢复之前没有恢复 full backup

Today is wednesday. I had restored the full back up of the db on sunday.

您使用 recovery 恢复了完整备份 。您的数据库已开始运行,它是 online,现在无法再恢复 logdifferential backup

要恢复您的 differential backup,您应该首先使用 norecovery 恢复您​​的 full backup ,然后才能恢复您的 differential backup.

请参阅这篇 BOL 文章以了解如何恢复差异备份:Restore a Differential Database Backup (SQL Server)

To restore a differential database backup

Execute the RESTORE DATABASE statement, specifying the NORECOVERY clause, to restore the full database backup that comes before the differential database backup. For more information, see How to: Restore a Full Backup.

Execute the RESTORE DATABASE statement to restore the differential database backup, specifying:

The name of the database to which the differential database backup is applied.

The backup device where the differential database backup is restored from.

The NORECOVERY clause if you have transaction log backups to apply after the differential database backup is restored. Otherwise, specify the RECOVERY clause.