Получить текущее выполнение оператора SQL Cursor - PullRequest
4 голосов
/ 05 августа 2011

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

Здесь, в разделе под смещением начала / конца оператора, указано, что вы можете использовать его вместе с dm_exec_sql_text для получения текущего выполняющегося оператора курсора. Какой будет команда для этого?

У меня довольно большой SP, который застыл, когда он достиг логического цикла курсора 'while (@@ fetch_status = 0), и я хотел бы посмотреть, является ли это точно выполняющимся оператором, как мне кажется, и я бы также хотелось бы видеть параметры для этого оператора, чтобы я мог точно видеть, почему курсор никогда не завершался, или просто почему оператор внутри цикла не завершится. Спасибо!

1 Ответ

1 голос
/ 05 августа 2011

начать с этого

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(%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...