是否有相当于SQL Server的'mysqladmin processlist'?

时间:2010-07-09 01:32:00

标签: sql-server-2008 processlist

我一直在尝试制定一个查询来帮助自己识别使用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备忘单也会很棒。

2 个答案:

答案 0 :(得分:2)

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

除此之外,

EXECUTE sp_who2

准确地告诉您所要求的内容:登录,DBName,Command,CPUTime,DiskIO都在那里......

如果您想要执行SPID的完全命令,可以使用

DBCC INPUTBUFFER(spid)

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

答案 1 :(得分:1)

如果您淘汰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