【问题标题】:Is there an equivalent to 'mysqladmin processlist' for SQL Server?SQL Server 是否有等效于“mysqladmin processlist”的功能?
【发布时间】:2010-07-09 01:31:59
【问题描述】:

我一直在尝试制定一个查询来帮助自己识别使用 SQL Server 的资源密集型查询/数据库/用户,但还没有完全搞定。我想构建一个查询,该查询将执行 'mysqladmin processlist' 将为 MySQL 执行的操作。

我提到了this related question,但还没有得到我真正需要的东西。我正在使用sp_whosp_who2 和这样的查询:

select master.dbo.sysprocesses.loginame, 
count(master.dbo.sysprocesses.loginame)
from master.dbo.sysprocesses
group by master.dbo.sysprocesses.loginame

问题始终是其中一种工具无法满足我的所有需求。我的目标是有一个采用这种格式的查询:

LOGIN, DATABASE, QUERY, CPU, MEM, etc.

如果有人知道如何执行此操作,我将不胜感激。如果有人有任何 SQL Server DBA 备忘单,那就太好了。

【问题讨论】:

    标签: sql-server-2008 processlist


    【解决方案1】:

    必须通过 sproc 调用来完成吗? SQL Server Management Studio(该链接适用于快速版,但 SQL Server 的完整安装已经拥有它)具有“活动监视器”功能,可以准确列出您想要的内容。

    除此之外,

    EXECUTE sp_who2
    

    完全满足您的要求:Login、DBName、Command、CPUTime、DiskIO,应有尽有...

    如果你想要一个 SPID 正在执行的 exact 命令,你可以使用

    DBCC INPUTBUFFER(spid)
    

    命令(sp_who2 只是告诉你它是 DELETE、SELECT 等)

    【讨论】:

    • 它不一定是存储过程调用。事实上我现在确实使用活动监视器。我想知道是否有办法让我确定正在运行的查询是什么?这样我就可以找出哪些查询导致了问题。
    • 在活动监视器中,您可以右键单击一个进程并选择“详细信息”以获取正在运行的命令。或者DBCC INPUTBUFFER,正如我所提到的。
    【解决方案2】:

    如果您退出sp_who2,您可以提取您感兴趣的字段:

    select    
      spid
     ,status 
     ,hostname
     ,program_name
     ,cmd
     ,cpu
     ,physical_io
     ,blocked
     ,dbid
     ,convert(sysname, rtrim(loginame))
            as loginname
    
          from sys.sysprocesses with (nolock)
          order by cpu desc
    

    【讨论】:

      猜你喜欢
      • 2011-01-16
      • 2011-03-24
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      • 2010-11-28
      • 2011-02-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多