[KB26352功能解说]在追踪SQL Server内部阻止场景时,如何确定SQL进程ID在执行什么操作
[b]* 本文由赛捷软件(上海)有限公司翻译完成,未经授权不得转载。如需转载,请先联系相应版块的版主取得授权。[/b][b]在追踪SQL Server内部的阻止场景时,如何确定SQL进程ID(SPID)正在执行什么操作[/b]
[b]描述[/b]
在追踪SQL服务器内部的阻止场景时,如何确定一个SQL进程ID(SPID)正在执行什么操作。
[b]解决方法[/b]
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的[b]“用户监控”[/b]功能下,使用这个信息来缩小最有可能牵涉在这个阻止中的用户范围。
[b]
相关资源[/b]
如何解决Sage X3性能慢的问题?
页:
[1]