[KB 26352功能解说] 在追踪SQL Server内部的阻塞场景时,如何确定SQL进程ID
* 本文由赛捷软件(上海)有限公司翻译完成,未经授权不得转载。如需转载,请先联系相应版块的版主取得授权。
[KB 26352功能解说] 在追踪SQL Server内部的阻塞场景时,如何确定SQL进程ID(SPID)正在执行什么操作
产品
Sage EM企业管理(原名Sage X3)
描述
在追踪SQL服务器内部的阻塞场景时,如何确定一个SQL进程ID(SPID)正在执行什么操作。
解决方法
1. 要想确定某项阻塞的根本原因,首先要确定是哪个SPID造成了阻塞。
2. 如果有多个SPID参与在某项阻塞中,那么必须找到主要的阻塞进程。
o 在SLQ Server Management Studio中运行sp_who或sp_who2以便找出主要的阻塞进程。
o 或者, SQL内的活动监视程序也能提供这项信息。
3. 一旦找到主要的阻塞进程之后,请在SQL Server Management Studio内运行以下查询:
SELECT
(SELECT [text]
FROM sys.dm_exec_sql_text(sql_handle)
) AS SqlCommand,
spid AS [Process ID], status AS [Status],
hostname AS [Host Name], hostprocess AS [Host Process], SPACE(3) AS [Company],
0 AS [Task], SPACE(64) AS [Description],
loginame AS [User], open_tran AS [Open Trans], cmd AS [Command],
blocked AS [Blocked], CONVERT(VARCHAR(19), waittime) AS [Wait Time],
[Waiting] =
Case waittype
WHEN 0x0000 THEN SPACE(256)
Else waitresource
END, login_time AS [Login Time],
SPACE(64) AS [WTS Client], SPACE(12) AS [WTS ID],
program_name AS [Application]
FROM sys.sysprocesses WITH (NOLOCK)
WHERE
spid = ##
注意:用SPID替换##。
• 上述查询将提供在SPID上发送的实际SQL语法。
• 在Sage ERP X3的“用户监控”功能下,使用这个信息来缩小最有可能牵涉在这个阻塞中的用户范围。
相关资源
如何解决Sage X3性能慢的问题? |