1.5 兼容级别

1.5  兼容级别

  兼容级别用于将某些数据库的行为设置为与指定的 SQL Server 早期版本兼容。


1.5.1  兼容级别列表

  为了使数据库与 SQL Server 的早期产品保持部分向后兼容,可以为数据库指定兼容级别。兼容级别只影响指定的数据库的行为,而不会影响整个实例的行为 。

  对于 SQL Server 2014 安装,默认的兼容级别是120。

  下表列出了常见的兼容级别。

产品名称 版本号 默认兼容级别 最低兼容级别
SQL Server 7.0 7.0 70
SQL Server 2000 8.0 80
SQL Server 2005 9.0 90 70
SQL Server 2008 10.0 100 80
SQL Server 2008 R2 10.50 100 80
SQL Server 2012 11.0 110 90
SQL Server 2014 12.0 120 90


1.5.2  新增的保留关键字

  SQL Server 新产品总是会引入一些新的关键字。一旦引入,这些关键字便会保持为保留关键字。例如,在兼容级别 90 中引入的保留关键字 PIVOT 在级别 100 和 110 中也被保留。

  如果某一应用程序使用对其保留级别而言是关键字的标识符,则该应用程序将失败。若要解决这一问题,请用方括号([ ])或引号(" ")括起该标识符;例如,若要将使用标识符 EXTERNAL 的应用程序升级为兼容级别90,可以将该标识符更改为 [EXTERNAL] 或 "EXTERNAL"。

◆ SQL Server 2005 引入的关键字有:EXTERNAL、PIVOT、UNPIVOT、REVERT、TABLESAMPLE。

◆ SQL Server 2008 引入的关键字有:CUBE、MERGE、ROOLUP。

◆ SQL Server 2012 引入的关键字有:WITH GROUP、TRY_CONVERT、SEMANTICKEYPHRASETA BLE、SEMANTICSIMILARITYDETAILSTABLE、SEMANTICSIMILARITYTABLE。



1.5.3  兼容级别之间的差异

  每个兼容级别都会引入一些的变化。例如:

◆ 使用兼容级别 90 时,不支持外部联接运算符 *= 和 =*,应使用 OUTER JOIN 关键字。varchar 和char 的联合返回 varchar。对于以 nvarchar 作为参数的内置函数,即使所提供的值为 varchar,该值仍将转换为 nvarchar(4000)。但如果传递较大值,SQL Server 2005 将生成错误。而在更低的兼容级别中,较大值将自行截断。

◆ 使用兼容级别100时,OUTPUT 子句中不允许使用全文谓词。日期时间内部函数(如 DATEPART)需要字符串输入值,才能成为有效的日期时间文字。在使用无效的日期时间文字时,例如SELECT DATEPART (year, '2007/05-30') 会返回错误。

◆ 使用兼容级别110时,在递归公用表表达式 (CTE) 查询中不允许 PIVOT。不能使用 RC4 或 RC4_128 加密新材料。对 time 和 datetime2 数据类型的 CAST 和 CONVERT 操作的默认样式始终为 121。


  兼容级别 120 引入的一些新行为如下所示 :

◆ SQL Server 2014 包括了对创建和优化查询计划的组件的显著改进。这个新的查询优化器功能依赖于使用数据库兼容性级别 120。 若要利用这些改进,应使用数据库兼容性级别 120 开发新的数据库应用程序。应对从较早版本的 SQL Server 中迁移的应用程序进行仔细测试,以便确认保持或改进了好的性能。如果性能下降,可以将数据库兼容性级别设置为 110 或更低,以便使用较早的查询优化器方法。

◆ 将 date 值转换为字符串值时,不忽略语言设置。

◆ EXCEPT 子句中的递归引用产生遵从 ANSI SQL 标准的错误。而在较低的兼容级别时,EXCEPT 子句右侧的递归引用产生无限循环。

◆ 递归 CTE 不允许列名重复。

◆ 更改触发器不更改触发器的状态(已启用或已禁用)。

◆ 将 IDENTITY_INSERT 设置为 OFF 后,不能为表中的标识列插入显式值。

◆ MERGE 语句的 $action 子句返回的值的排序规则是数据库排序规则而非服务器排序规则,因此不会返回排序规则冲突错误。

◆ SELECT INTO 语句可创建并行插入操作。插入大量行时,并行操作可提高性能。



1.5.4  升级建议

  一般只有最后两个版本的兼容级别可以直接升级。例如,可以将 SQL Server 2008(兼容级别为100)的数据库直接升级到 SQL Server 2014(兼容级别为120)。

  不推荐直接将 SQL Server 2005(兼容级别为90)的数据库升级到 SQL Server 2014。如果直接升级,升级过程中兼容级别将从 90 更新为 100。



本文出自 “SQL Server 管理员指南” 博客,谢绝转载!

你可能感兴趣的:(兼容,概述,兼容级别)