2009-06-08 71 views

回答

14
+0

谢谢的链接和答案。 – 2009-06-08 17:58:10

+1

另请注意,如果您因任何原因必须为数据库指定较低的兼容模式,则后面版本中可用的语法将不可用。例如,SQL Server 2005不喜欢旧的ansi-join语法,并且如果将数据库的兼容模式设置为8.0(SQL Server 2000),那么WITH语句也不适用于该数据库。 – 2009-06-08 18:08:50

2

介绍如果您需要的功能,这可能是说服管理层升级的好办法。

1

@Aaron - 你说,“兼容性级别不影响语法的可用性。”其实,我认为这只是有时候。我在SQL Server 2005中使用兼容级别80(SQL Server 2000模式)数据库时看到的是SQL Server 2005新增的一些语法可用,其他语法不可用。例如,正如您正确指出的那样,CTE是可用的。但是,PIVOT运营商不是。所以(以我的小经验),它似乎取决于特定的语法特征。 (我会张贴此顶端回答下,但显然这个网站的设计需要您获得50点声望,然后才能在线程适当的位置做出回应。)

0

小心兼容级别和CTE,他们有点奇怪。 SQL Server上

SELECT 1 a 
WITH A AS (SELECT 1 a) 
    SELECT 1 from A 

奔跑2005兼容级别80(SQL Server 2000中),但不兼容级别90(SQL Server 2005中)。兼容性级别90在with之前正确需要分号。

与SQL Server 2000之前指出不支持此可言。

0

运行SQL 2008兼容性级别设置为80,CTE似乎工作。真奇怪。不要问为什么我们的兼容性级别设置为80 ...刚从这里开始。