首页 新闻 搜索 专区 学院

关于SQL报错的问题?

0
悬赏园豆:50 [已解决问题] 解决于 2015-10-05 11:39

就下面这一句SQL,就这么简单的一句:

SELECT session_id,[text]
FROM sys.dm_exec_connections
    CROSS APPLY sys.dm_exec_sql_text(most_recent_sql_handle)
WHERE session_id IN
    (
        SELECT request_session_id 
        FROM sys.dm_tran_locks WITH(NOLOCK) 
        WHERE request_status = 'WAIT'
    ) 

上面这句在2008R2执行时一直报错:

消息 321,级别 15,状态 1,第 3 行
most_recent_sql_handle 不是可识别的表提示选项。如果它要作为表值函数或 CHANGETABLE 函数的参数,请确保您的数据库兼容模式设置为 90。

但这是系统表,确实有这个字段,这是我从其它书上摘下来的代码(where条件我改了一下),为什么就无法执行呢?

空明流光的主页 空明流光 | 初学一级 | 园豆:62
提问于:2015-10-05 10:33
< >
分享
最佳答案
0

请确保您的数据库兼容模式设置为 90。

你搜索这句话就知道了。

收获园豆:50
爱编程的大叔 | 高人七级 |园豆:30753 | 2015-10-05 10:35

改了以后确实可以执行了,但改兼容级别会对数据库有影响吗?有没有办法不更改兼容级别查询到死锁代码段?

空明流光 | 园豆:62 (初学一级) | 2015-10-05 10:47

@沧海一杰: 兼容级别是指,你的命令SQL Server是否接受,有的命令在新版SQL Server中是奥特曼了。

所以要么你别用只有90兼容的命令,要么你就得使用兼容模式。

反正大部分的人SQL SERVER也只是拿来当SQL 2000使用,又没有用到啥新版特性,所以兼容也没啥大事。

爱编程的大叔 | 园豆:30753 (高人七级) | 2015-10-05 11:17

@爱编程的大叔: 好的,谢谢!

空明流光 | 园豆:62 (初学一级) | 2015-10-05 11:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册