就下面这一句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条件我改了一下),为什么就无法执行呢?
请确保您的数据库兼容模式设置为 90。
你搜索这句话就知道了。
改了以后确实可以执行了,但改兼容级别会对数据库有影响吗?有没有办法不更改兼容级别查询到死锁代码段?
@沧海一杰: 兼容级别是指,你的命令SQL Server是否接受,有的命令在新版SQL Server中是奥特曼了。
所以要么你别用只有90兼容的命令,要么你就得使用兼容模式。
反正大部分的人SQL SERVER也只是拿来当SQL 2000使用,又没有用到啥新版特性,所以兼容也没啥大事。
@爱编程的大叔: 好的,谢谢!