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

时间:2019-03-13 07:17:32

标签: sql-server database backup database-backups backup-strategies

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

我有两个数据库服务器。其中一个是生产服务器,另一个是报表服务器。报表服务器在生产数据库服务器中包含相同的数据库。在每周结束时,我会完全备份产品数据库服务器中的数据库,以用于报表服务器。以同样的方式,在每个午夜,我还对产品服务器中的数据库进行差异备份以用于报表服务器。第二天,我将最后一个差异还原到报表服务器中的数据库。我在该过程中使用了可视化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'

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

谢谢。

1 个答案:

答案 0 :(得分:0)

您遇到此错误,是因为从SpringBootTest还原之前没有还原任何full backup

  

今天是星期三。我已经恢复了数据库的完整备份   星期天。

您已通过differential backup 恢复了完整备份。您的数据库已开始运行,它是recovery,现在无法恢复更多的onlinelog

要还原您的differential backup,您应该先用differential backup 还原full backup,然后才能还原norecovery

请参阅此BOL文章以了解如何还原差异备份:Restore a Differential Database Backup (SQL Server)

  

还原差异数据库备份

     

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

     

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

     

差异数据库备份所针对的数据库的名称   已应用。

     

还原差异数据库备份的备份设备   来自。

     

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