SQL Server 兼容级别

Posted lonelyxmas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server 兼容级别相关的知识,希望对你有一定的参考价值。

ALTER DATABASE (Transact-SQL) 兼容级别

适用对象:技术图片SQL Server(从 2008 版开始)技术图片Azure SQL 数据库技术图片Azure SQL 数据仓库技术图片并行数据仓库

将某些数据库行为设置为与指定的 SQL Server 版本兼容。 有关其他 ALTER DATABASE 选项,请参阅 ALTER DATABASE

有关语法约定的详细信息,请参阅 Transact-SQL 语法约定

语法

ALTER DATABASE database_name

SET COMPATIBILITY_LEVEL =  150 | 140 | 130 | 120 | 110 | 100 | 90 

参数

database_name 要修改的数据库的名称。

COMPATIBILITY_LEVEL 150 | 140 | 130 | 120 | 110 | 100 | 90 | 80 是使数据库与之兼容的 SQL Server 版本。 可以配置以下兼容级别值(并非所有版本都支持所有以上列出的兼容级别):

Product数据库引擎版本兼容级别指定支持的兼容级别值
SQL Server 2019(预览版) 15 150 150、140、130、120、110、100
SQL Server 2017 (14.x) 14 140 140、130、120、110、100
Azure SQL Database 单一数据库/弹性池 12 130 150、140、130、120、110、100
Azure SQL Database 托管实例 12 130 150、140、130、120、110、100
SQL Server 2016 (13.x) 13 130 130、120、110、100
SQL Server 2014 (12.x) 12 120 120、110、100
SQL Server 2012 (11.x) 11 110 110、100、90
SQL Server 2008 R2 10.5 100 100、90、80
SQL Server 2008 10 100 100、90、80
SQL Server 2005 (9.x) 9 90 90、80
SQL Server 2000 8 80 80

 备注

从 2018 年 1 月起,在 Azure SQL Database 中,新创建的数据库的默认兼容性级别为 140 。 我们不会更新现有数据库的数据库兼容性级别。 这是由客户自行决定的。 不过,强烈建议客户计划转到最新的兼容性级别,以便利用最新的改进。

如果想要对整个数据库利用数据库兼容性级别 140,但有理由优先选择映射到数据库兼容性级别 110 的 SQL Server 2012 (11.x) 的基数估计模型,请参阅 ALTER DATABASE SCOPED CONFIGURATION,尤其是其关键字 LEGACY_CARDINALITY_ESTIMATION = ON 。

有关如何评估 Azure SQL Database上两个兼容级别之间最重要查询的性能差异的详细信息,请参阅 Improved Query Performance with Compatibility Level 130 in Azure SQL Database(在 Azure SQL 数据库中使用兼容级别 130 提高了查询性能)。 注意,本文是指兼容性级别 130 和 SQL Server,但同样的方法也适用于转到 140 的 SQL Server 和 Azure SQL Database。

执行以下查询可确定连接到的数据库引擎的版本。

 
SELECT SERVERPROPERTY(‘ProductVersion‘);

 备注

Azure SQL Database上并不支持所有功能(因兼容级别而异)。

若要确定当前兼容级别,请查询 sys.databases 的 compatibility_level 列。

 
SELECT name, compatibility_level FROM sys.databases;

以上是关于SQL Server 兼容级别的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 兼容性级别和基数估计

SQL Server 兼容级别

SQL Server 2014 兼容级别错误

OPENJSON 在兼容级别设置为 130 的 SQL Server 2016 上不可用

以兼容级别 80 运行 SQL Server 2005 数据库是不是会对性能产生负面影响?

用于在 SQL Server 中验证表名的正则表达式(数据库兼容级别 120)[关闭]