Могу ли я увидеть TextData в Profiler в запросе? - PullRequest
0 голосов
/ 30 апреля 2019

Когда я выполняю процедуру sp_executesql, Профилировщик показывает запрос, по которому он был вызван.

Например)
Execute

 exec sp_executesql N'EXEC [long_pro] @int = @p0', N'@p0 int', @p0=1

Профилировщик

 EventClass        TextData
 SQL:BatchString   exec sp_executesql N'EXEC [long_pro] @int = @p0', N'@p0 int', @p0=1

Однако в dm_exec_sql_text сгенерированный синтаксис процедуры long_pro выводится.

CREATE PROCEDURE long_pro @int INT  AS    WAITFOR DELAY '00:01'  

Есть ли способ получить запрос, такой как TextData Profiler?
Следующий запрос - тот, который я сейчас использую.

SELECT @m_RunTime                                                           AS RunTime
       ,@@SERVERNAME + '\' + @@SERVICENAME                                  AS ServerName
       ,DB_NAME(der.database_id)                                            AS DBName
       ,des.program_name                                                    AS ProgramName
       ,des.login_name                                                      AS LoginName
       ,CAST(DATEDIFF(ms, der.start_time, @runTime) / 1000 AS VARCHAR(10)) 
         + '.'
         + CAST(DATEDIFF(ms, der.start_time, @runTime) % 1000 AS VARCHAR(10)) AS Duration
       ,der.start_time                                                        AS StartTime
       ,der.cpu_time                                                          AS CPUTime
       ,der.reads                                                             AS Reads
       ,der.writes                                                            AS Writes
       /*
       ,SUBSTRING(dest.TEXT, (der.statement_start_offset / 2) + 1, ((CASE der.statement_end_offset WHEN -1     -- Text
                                                                                                   THEN DATALENGTH(dest.TEXT)
                                                                                                   ELSE der.statement_end_offset
                                                                                                   END - der.statement_start_offset) / 2) + 1) AS Text -- Text
                                                                                                   */
       ,dest.text text
FROM sys.dm_exec_requests der WITH(NOLOCK)
     INNER JOIN sys.dm_exec_sessions des WITH(NOLOCK)
       ON 1 = 1
          AND der.session_id = des.session_id
          AND der.session_id > 49
          AND der.session_id != @@SPID
          AND der.status IN ('running', 'runnable', 'suspended')
          AND der.start_time < DATEADD(second, @secTime, @runTime)
    CROSS APPLY sys.dm_exec_sql_text(sql_handle) dest
ORDER BY start_time ASC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...