bernd_k Asked: 2011-08-30 05:06:00 +0800 CST2011-08-30 05:06:00 +0800 CST 2011-08-30 05:06:00 +0800 CST Microsoft 兼容级别的含义是什么? 772 在 SQL-Server 2005 上将 cmptlevel 设置为 80 会禁止使用 PIVOT 和 APPLY,但不会影响分析函数的使用。这背后有什么道理吗? sql-server compatibility-level 2 个回答 Voted Kenneth 2011-08-30T05:29:35+08:002011-08-30T05:29:35+08:00 MSDN ALTER DATABASE Compatibility Level解释了各个级别的行为。(只需向下滚动,您将找到以下主题的比较表) 如果您只是从 MSDN 顶部菜单更改版本,您可以找到更具体的比较表(它们链接到以下列表中的前 3 个版本) 80 = SQL Server 2000 90 = SQL Server 2005 100 = SQL Server 2008 和R2 110 = SQL Server 2012 120 = SQL Server 2014 较低兼容级别和级别 120 之间的差异 示例行(使用旧的查询优化器代替新的 SQL Server 2014 引擎,其中包括对创建和优化查询计划的组件的重大改进) 较低兼容级别和级别 110 之间的差异 Best Answer gbn 2011-08-30T05:30:31+08:002011-08-30T05:30:31+08:00 我观察到的一些基本原理,但这并不详尽,是我的猜测 兼容性级别不是全有或全无的事情。它在您修复问题时提供部分向后兼容性。 一个带有 LOCK 提示的简单示例 FROM Table (NOLOCK) -- not allowed with level 90+ 和 FROM Table WITH (NOLOCK) -- WITH is optional for level 80 为什么现在这是强制性的,我不知道。与CTE有关吗? 对于 PIVOT 和 APPLY,我怀疑使用这些的 SQL 语句只是非法的 SQL Server 2000 语法,而 ROW_NUMBER 只是一个未知函数并且“不太重要” 使用 CROSS APPLY 的示例。对于 80,这是非法的 SQL Server 2000 语法。 FROM SomeTable S CROSS APPLY --or JOIN dbo.someTVF (S.column) 由于较新版本中的级别较低,因此有很多关于错误的问题供您查看并希望得到理解 仅供参考,80-90 和 90-100 差异的完整列表
MSDN ALTER DATABASE Compatibility Level解释了各个级别的行为。(只需向下滚动,您将找到以下主题的比较表)
如果您只是从 MSDN 顶部菜单更改版本,您可以找到更具体的比较表(它们链接到以下列表中的前 3 个版本)
120 = SQL Server 2014
较低兼容级别和级别 120 之间的差异
我观察到的一些基本原理,但这并不详尽,是我的猜测
兼容性级别不是全有或全无的事情。它在您修复问题时提供部分向后兼容性。
一个带有 LOCK 提示的简单示例
和
为什么现在这是强制性的,我不知道。与CTE有关吗?
对于 PIVOT 和 APPLY,我怀疑使用这些的 SQL 语句只是非法的 SQL Server 2000 语法,而 ROW_NUMBER 只是一个未知函数并且“不太重要”
使用 CROSS APPLY 的示例。对于 80,这是非法的 SQL Server 2000 语法。
由于较新版本中的级别较低,因此有很多关于错误的问题供您查看并希望得到理解
仅供参考,80-90 和 90-100 差异的完整列表