sqlserver会话显示在执行的FETCH API_CURSOR00000xx语句是什么?

通过常用的两种方式,都没有看到原始SQL脚本

select t.spid, t.kpid, t.blocked, t.status, t.lastwaittype, t.waitresource, t.waittime, t.open_tran
    , DB_NAME(t.dbid) DbName, t.last_batch, t.loginame, t.program_name, t.hostname, t.hostprocess
    , t.cmd, t.stmt_start, t.stmt_end, t.request_id, dc.text
from    master.sys.sysprocesses t  
    outer apply master.sys.dm_exec_sql_text(t.sql_handle) dc
where    t.spid = 53

SELECT t.text
FROM sys.dm_exec_connections c
CROSS APPLY sys.dm_exec_sql_text (c.most_recent_sql_handle) t
WHERE session_id = 53
通过DBCC INPUTBUFFER(spid),返回结果也是:FETCH API_CURSOR00000xx


那么还有没有其他的视图来帮助我们呢?我们可以使用sys.dm_exec_cursors视图,将spid代入进去
SELECT c.session_id, c.properties, c.creation_time, c.is_open, t.text
FROM  sys.dm_exec_cursors(53) c
CROSS APPLY sys.dm_exec_sql_text (c.sql_handle) t

参考:
https://www.cnblogs.com/lyhabc/p/3764905.html

原文地址:https://www.cnblogs.com/zhaoguan_wang/p/14433104.html