这与 2012 -> 2016 升级的回滚方案有关。
场景是 SQL Server 2012 数据库恢复到 2016 并应用日志文件,直到它是最新的。然后将生产系统切换到 2016 年。数据库保持在 2012 年的兼容级别。随后,保留 2016 年实例的增量日志,直到需要回滚(假设 8 小时)。
现在可以将日志应用于 SQL Server 2012 实例以使其更新吗?
这与 2012 -> 2016 升级的回滚方案有关。
场景是 SQL Server 2012 数据库恢复到 2016 并应用日志文件,直到它是最新的。然后将生产系统切换到 2016 年。数据库保持在 2012 年的兼容级别。随后,保留 2016 年实例的增量日志,直到需要回滚(假设 8 小时)。
现在可以将日志应用于 SQL Server 2012 实例以使其更新吗?
不,我们不能那样做。这是因为内部文件结构不同。
您可以使用 SQL Compare 和 SQL Data Compare 等第三方工具在源和目标之间进行“差异化”,根据这些差异生成更新脚本,然后在目标平台上执行这些脚本;这适用于不同的 SQL Server 版本。
我希望这有帮助
一旦您在 SQL Server 2016 上使数据库联机,数据库将升级为 2016 格式,并且不再与 SQL Server 2012 兼容。这些更改是完全记录的操作,并将包含在您的事务日志中。
在 SQL Server 2016 上进行的第一个事务日志备份将包含将数据库从 2012 (110) 升级到 2016 (130) 的脚本升级步骤。如果您尝试将第一个事务日志备份应用到 SQL Server 2012 上的数据库副本,它将失败。
无法备份/恢复(包括日志备份)到较低版本。
如果您需要回滚,则需要“手动”同步数据——使用自定义脚本或像 Red Gate SQL Data Compare 这样的工具。
一般来说,我的偏好是在完成基本测试之前不要发布系统供“公共”使用。如果在冒烟测试过程中出现问题,您可以回滚,而无需将数据同步回低版本。如果稍后出现问题,在冒烟测试通过之后,并且在用户被允许返回系统之后——你承诺前滚并解决问题,而不是试图回滚。
抱歉不行。SQL Server 就像时间旅行:你不能倒退。