Sql server 将SQL Server 2016兼容级别更改为2012

Sql server 将SQL Server 2016兼容级别更改为2012,sql-server,sql-server-2012,sql-server-2014,compatibility,Sql Server,Sql Server 2012,Sql Server 2014,Compatibility,在我当前的项目中,我们正在使用兼容级别为2012110的SQL server 2016,我想将其更改为2016。以下是我的问题: 我们是否正在失去此兼容性级别2012的性能改进?我如何证明这一点? 在过去,正如我的拼贴画所说,他们尝试过这种方法,但有些索引不起作用。有这样的风险吗? 你怎么看?值得一试吗? 致意 你怎么看?值得一试吗 是的, 但是您应该在数据库中测试它 兼容性水平意味着新特性使用的可能性+新基数估计器的使用,第一个是好事,第二个取决于 在过去,正如我的拼贴画所说,他们尝试了这个和

在我当前的项目中,我们正在使用兼容级别为2012110的SQL server 2016,我想将其更改为2016。以下是我的问题:

我们是否正在失去此兼容性级别2012的性能改进?我如何证明这一点? 在过去,正如我的拼贴画所说,他们尝试过这种方法,但有些索引不起作用。有这样的风险吗? 你怎么看?值得一试吗? 致意

你怎么看?值得一试吗

是的, 但是您应该在数据库中测试它

兼容性水平意味着新特性使用的可能性+新基数估计器的使用,第一个是好事,第二个取决于

在过去,正如我的拼贴画所说,他们尝试了这个和一些索引 没用。有这样的风险吗

这意味着新的基数估计器进行了不同的估计,因此计划不同,没有使用某些指标。 这可能是好的也可能是坏的,您应该比较执行时间,而不是索引使用情况。 如果您看到某些查询的性能更差,可以使用查询提示在查询级别使用遗留基数估计器:

即使在服务器级别,也可以启用旧基数估计器:

启用此功能后,您将拥有所有旧计划,但仍可以使用2016年的新功能

在这里,您可以阅读有关基数估计器及其相关提示的更多信息:

sql server 2012中不推荐但受支持的旧版本sql server的某些功能在sql server 2016中不再受支持。查看每个版本的sql server的文档将是一个开始。例如,这一条:你说有些索引不起作用是什么意思?它们不能被创建,不能被重建,或者性能很差?正如他们所说,执行计划并没有像不存在一样使用相同的索引。
OPTION(QUERYTRACEON 9481)
DBCC TRACEON(9481, –1)