返回列表 发帖

[KB26352功能解说]在追踪SQL Server内部阻止场景时,如何确定SQL进程ID在执行什么操作

* 本文由赛捷软件(上海)有限公司翻译完成,未经授权不得转载。如需转载,请先联系相应版块的版主取得授权。


在追踪SQL Server内部的阻止场景时,如何确定SQL进程ID(SPID)正在执行什么操作



描述


在追踪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性能慢的问题?

返回列表