Есть ли эквивалент для «mysqladmin processlist» для SQL Server? - PullRequest
0 голосов
/ 09 июля 2010

Я пытался сформулировать запрос, чтобы помочь себе определить ресурсоемкие запросы / базу данных / пользователей, использующие SQL Server, и пока не получил его.Я хочу создать запрос, который будет делать то же, что и mysqladmin processlist для MySQL.

Я упомянул этот связанный вопрос , но не получил от него того, что мне действительно нужно,Я использую sp_who, sp_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 ]

2 голосов
/ 09 июля 2010

Должен ли быть сделан вызов sproc? SQL Server Management Studio (ссылка для экспресс-издания, но у полной установки SQL Server она уже есть) имеет функцию «Монитор активности», в которой отображается именно то, что вам нужно.

Кроме этого,

EXECUTE sp_who2

Дает вам именно то, что вы просили: Логин, DBName, Команда, CPUTime, DiskIO, все это есть ...

Если вы хотите точную команду , которую выполняет SPID, вы можете использовать команду

DBCC INPUTBUFFER(spid)

(sp_who2 просто сообщает вам, является ли это DELETE, SELECT и т. д.)

1 голос
/ 09 июля 2010

Если вы выберете 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
...