涉及DMV的简单查询的T-SQL编译问题

时间:2011-09-20 13:09:57

标签: tsql sql-server-2008 sql-server-2008-r2

由于某种原因,以下使用sys.dm_exec_requests DMV和sys.dm_exec_sql_text 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'。'。

附近的语法不正确

查询看起来很简单,但看起来T-SQL解析器却在er.sql_handle上徘徊。我认为这可能是一个逃避问题并尝试er.[sql_handle],但遗憾的是也出现了同样的错误。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

如果您使用的是2008或2008 R2且EXEC sp_dbcmptlevel 'databasename'提供低于90,请使用以下脚本:

ALTER DATABASE databasename SET COMPATIBILITY_LEVEL = 100