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 兼容级别的主要内容,如果未能解决你的问题,请参考以下文章
OPENJSON 在兼容级别设置为 130 的 SQL Server 2016 上不可用