迁移后升级数据库兼容性级别是否会导致任何破坏结果?

var*_*ble 5 sql-server compatibility-level

链接:https://learn.microsoft.com/en-us/sql/database-engine/install-windows/change-the-database-compatibility-mode-and-use-the-query-store ?view=sql-服务器版本15

我正在将 sql server 从 2016 年迁移到 2019 年。我了解,默认情况下,迁移后数据库将保留现有的兼容性级别。升级兼容性级别可启用新功能。

Microsoft 建议采用以下方法来升级兼容性级别以避免回归:

在此输入图像描述

兼容性级别升级是否会导致任何破坏结果?或者查询回归(我认为这意味着由于错误的执行计划选择而导致查询比平时花费更多的时间)是兼容性升级的唯一负面影响吗?

J.D*_*.D. 6

查询性能回归是主要问题,这也是 Microsoft 建议在更改兼容性级别之前首先启用查询存储的原因。这允许查询存储在您更改兼容性级别之前构建主要查询的性能基线,以便能够在您更改兼容性级别之后进行比较,以便它可以为您提供有关查询退化(变慢)的信息和指标。正如文档提到的,您可以使用查询存储强制将“最后已知的良好计划”作为短期修复,同时分析如何通过更好的长期修复来优化该查询。

当然,更改兼容性级别总是可能会遇到错误,但我认为这比实际实例版本升级遇到错误的可能性要小。例如,当我最近从 2016 年 RTM 升级到 2019 年 RTM 时,我遇到了一个与通过链接服务器调用的函数进行所有权链接的错误。通过安装当时最新的 CU(当前为CU 15)解决了这个问题。因此,将 2019 实例修补到最新的 CU 以最大限度地减少错误非常重要。

这也是为什么建议首先在开发服务器中进行版本升级,等待几周或几个月来分析结果,然后在充分测试后在生产中应用相同的升级。