【问题标题】:sp_WhoIsActive/spwho2 - get process idsp_WhoIsActive/spwho2 - 获取进程 ID
【发布时间】:2019-07-25 09:45:34
【问题描述】:

我是一名开发人员,帮助 DBA 解决零星的 CPU 100% 问题。

请看下面的 SQL 查询:

Select spid,hostname,hostprocess,program_name,nt_username, blocked, waittime, waittype, loginame,cmd,spid,waittype,waittime,lastwaittype,cpu,physical_io,memusage,
login_time,last_batch,open_tran,status,net_address, t.text 
from sys.sysprocesses sp 
CROSS APPLY( select text from sys.dm_exec_sql_text(sp.sql_handle))t 
where hostname = 'MyOtherDatabaseServer'

它返回一条记录。然后我在 MyOtherDatabaseServer 上执行以下操作:

EXECUTE sp_WhoIsActive

有没有办法可以将服务器 1 上的结果与服务器 2 上的结果联系起来?我希望 sp_WhoIsActive 会为每条记录返回一个进程 ID(这会将它们联系起来,因为第一个查询中有一个 HostProcess)。

在服务器 1 和 MyOtherDatabaseServer 之间有一个链接服务器设置。我正在尝试查找“服务器 1”上的哪个数据库正在使用链接服务器并在 MyOtherDatabaseServer 上运行查询。

【问题讨论】:

  • @Darko Martinovic,这有什么帮助?谢谢。
  • @Darko Martinovic,我不明白。这将如何将它们联系起来?

标签: sql sql-server sp-who2


【解决方案1】:

在运行链接服务器查询时,它将生成 OLEDB 的等待类型,并且等待资源将作为链接服务器名称和括号中的 SPID 列出。

这可以使用wait_type 和wait_resource 列中的sys.dm_exec_requests 动态管理视图查看,或者在waitresource 列的sys.sysprocesses 表中查看。

在这种情况下,主机进程并不能真正帮助您,因为它指的是资源监视器中显示的 PID,并且在链接服务器查询的情况下只是 sqlservr 实例本身。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 2011-07-16
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 2023-01-07
    • 2011-05-05
    相关资源
    最近更新 更多