获取当前正在执行SQL Cursor语句

时间:2011-08-05 18:28:23

标签: sql sql-server-2005 loops syntax cursor

http://msdn.microsoft.com/en-us/library/ms190346.aspx

它在声明开始/结束偏移量下面的部分中说明,您可以将其与dm_exec_sql_text结合使用以获取当前正在执行的游标语句。那命令是什么?

我有一个相当大的SP,它在到达游标逻辑循环时冻结了(@@ fetch_status = 0)并且我想看看它是否是我认为的确切执行语句,而且我想也喜欢看这个语句的参数,所以我可以确切地看到为什么游标永远不会退出,或者只是为什么循环中的语句不能完成。谢谢!

1 个答案:

答案 0 :(得分:1)

从这个

开始
SELECT * FROM(SELECT session_id,
     COALESCE(OBJECT_NAME(s2.objectid),'Ad-Hoc') AS ProcName,
    (SELECT TOP 1 SUBSTRING(s2.TEXT,statement_start_offset / 2+1 ,
      ( (CASE WHEN statement_end_offset = -1
         THEN (LEN(CONVERT(NVARCHAR(MAX),s2.TEXT)) * 2)
         ELSE statement_end_offset END)  - statement_start_offset) / 2+1))  
       AS sql_statement
FROM sys.dm_exec_requests AS s1
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2 ) x
WHERE  sql_statement 
NOT like 'SELECT * FROM(SELECT session_id,COALESCE(%'