12

我有一个当前正在运行的存储过程,并且似乎在特定查询上挂起/锁定。我怎样才能看到哪个查询?最好不修改proc。

使用

DBCC Inputbuffer (65)

给我

语言事件 0 执行 mySP;

4

3 回答 3

17
SELECT SUBSTRING(st.text, ( r.statement_start_offset / 2 ) + 1, 
              ( ( CASE WHEN r.statement_end_offset <= 0
                       THEN DATALENGTH(st.text) 
              ELSE r.statement_end_offset END - 
       r.statement_start_offset ) / 2 ) + 1) AS statement_text 
FROM   sys.dm_exec_requests r 
       CROSS APPLY sys.dm_exec_sql_text(sql_handle) st 
WHERE  session_id = 65 
于 2012-02-15T12:50:25.363 回答
2

有一个出色的存储过程可以获取有关当前正在运行的查询的扩展信息。可从以下网址下载: http ://whoisactive.com

于 2012-02-15T12:53:21.187 回答
1

使用 SQL 探查器;顾名思义,它是 SQL Server 的主要分析工具,它可以显示过程中每个语句的执行时间。

于 2012-02-15T13:00:06.493 回答