由于某种原因,以下使用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]
,但遗憾的是也出现了同样的错误。
答案 0 :(得分:3)
在SQL Server 2000兼容模式下在DB的上下文中运行它时出现此错误。尝试在其中一个系统数据库的上下文中运行它。
答案 1 :(得分:1)
如果您使用的是2008或2008 R2且EXEC sp_dbcmptlevel 'databasename'
提供低于90,请使用以下脚本:
ALTER DATABASE databasename SET COMPATIBILITY_LEVEL = 100