我正在尝试提出使用一个完整备份文件还原数据库的解决方案,然后使用每小时通过 FTP 站点创建的事务日志。
所以,这里有一个场景。
我连接到数据提供商的 FTP 站点,首先获取一个完整的备份文件,然后每天使用 24 个事务日志恢复数据库。因此,我将每晚(大约 12 点)运行以更新前一天数据中的所有事务日志。
我了解到有一个名为 的选项Standby
,因此我尝试使用备用完全备份,但似乎我无法执行此操作,因为需要升级数据库。当我尝试使用“待机”模式恢复完整备份时出现此错误:
由于需要升级数据库,因此无法使用 WITH STANDBY 恢复此备份。重新发出没有 WITH STANDBY 的 RESTORE可以确认这一点。现在,由于备用选项不是一个选项,如果我们尝试每天继续进行事务日志恢复(使用 24 个文件),应该如何从数据库中读取数据?
我将回到使用NORECOVERY
完全备份和所有其他事务日志文件恢复数据库的方式(因为使用RECOVERY
模式,我以后无法恢复其他文件)。
但是,我需要访问数据库以定期读取数据并查询数据。当我们尝试使用事务日志更新数据库时,我不确定是否有办法读取数据(在工作时间)。我们不能从RECOVERY
工作时间的NORECOVERY
模式更改为夜间批处理的模式,对吗?我是否必须设置两个独立的数据库(一个用于恢复,另一个用于以某种方式从其他数据库中获取数据)。我不确定这是可能的。
我应该怎么办?
基本上,我们需要通过 FTP 从其他公司获取更新数据。在我们得到数据后,开发者需要使用它来创建报告。
最简单的选择是将源实例升级到与目标实例相同的版本(或以其他方式确保数据库引擎版本兼容),或者每天从完整备份执行恢复以进行刷新。
例如,假设源是 SQL Server 2008,目标是 SQL Server 2012。将源安装从 SQL Server 2008 升级到 SQL Server 2012 将有助于确保数据库版本匹配,以便
STANDBY
可以使用。将更改应用到较低的 SQL Server 版本将需要一些开发工作。
Jonathan Kehayias 的文章Database Version vs Database Compatibility Level带来了一些与该错误消息相关的有趣信息:
似乎当您打算使用
WITH STANDBY
不需要升级过程的选项时,或者您所经历的还原将失败。我自己从来没有注意到升级过程,直到Paul White在另一篇文章中分享了我错误地将升级与兼容性级别相关联的链接。我认为也值得在这里分享。