首页 > 解决方案 > 恢复每日差异备份 - 没有文件准备好前滚问题

问题描述

我使用 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'

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

先感谢您。

标签: sql-serverdatabasebackupdatabase-backupsbackup-strategies

解决方案


您收到此错误是因为full backup在您从differential backup.

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

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

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

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

还原差异数据库备份

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

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

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

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

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


推荐阅读