【发布时间】:2012-02-15 12:31:30
【问题描述】:
我有一个当前正在运行的存储过程,并且似乎挂起/锁定特定查询。我怎样才能看到哪个查询?最好不要修改proc。
使用
DBCC Inputbuffer (65)
给我
语言事件 0 EXEC mySP;
【问题讨论】:
标签: sql-server sql-server-2008 tsql stored-procedures dbcc
我有一个当前正在运行的存储过程,并且似乎挂起/锁定特定查询。我怎样才能看到哪个查询?最好不要修改proc。
使用
DBCC Inputbuffer (65)
给我
语言事件 0 EXEC mySP;
【问题讨论】:
标签: sql-server sql-server-2008 tsql stored-procedures dbcc
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
【讨论】:
65(来自 DBCC Inputbuffer (65))特别感兴趣
有一个出色的存储过程可以获取有关当前正在运行的查询的扩展信息。可从以下位置下载: http://whoisactive.com
【讨论】:
使用 SQL Profiler;顾名思义,它是 SQL Server 的主要分析工具,它可以显示过程中每个语句的执行时间。
【讨论】:
SP:StmtCompleted 和 SP:StmtStarting 事件。