2011-09-20 115 views
1

出于某种原因,它使用sys.dm_exec_requests DMV和sys.dm_exec_sql_text DMV以下查询简单查询T-SQL编译问题无法编译:涉及DMV

SELECT er.session_id, es.[text] 
FROM sys.dm_exec_requests AS er 
    CROSS APPLY sys.dm_exec_sql_text(er.[sql_handle]) AS es 

查询摘录上面是一个更大的一部分(和更复杂)查询其失败,因为这更小的查询将不执行,给我的语法错误:

Msg 102, Level 15, State 1, Line 3 Incorrect syntax near '.'.

查询看起来很简单,但它看起来像T-SQL分析器在er.sql_handle是犹豫不决。我认为这可能是一个逃避问题,并尝试er.[sql_handle],但可悲的是得到了同样的错误。

+0

没有语法错误,在这里,你的运行精确查询作为针对2008服务器/数据库给出。 –

+0

我不知道这是否与SQL Server 2008 R2有关。我正在使用:Microsoft SQL Server 2008 R2(RTM) - 10.50.1797.0(X64)2011年6月1日15:43:18 Copyright(c)Windows NT 6.1上的Microsoft Corporation Enterprise Edition(64位)(Build 7601:Service包1) –

回答

3

在SQL Server 2000兼容模式下的数据库环境中运行时出现此错误。尝试在其中一个系统数据库的上下文中运行它。

+2

只是试图发布基本上相同的答案。 –

+0

你击中了头部!我的数据库被设置为SQL Server 2000兼容模式。我将其更改为SQL Server 2008,查询执行得很好。谢谢! –

+0

顺便说一下,如何为实例级新创建的数据库设置默认兼容模式(例如,SQL Server 2008 R2)? –

1

如果使用的是2008或2008 R2和EXEC sp_dbcmptlevel 'databasename'给予低于90则使用下面的脚本:

ALTER DATABASE databasename SET COMPATIBILITY_LEVEL = 100