quinta-feira, 17 de março de 2016

[Dica] Manipulando o resultado de SP_WHO2 no SQL Server 2000

A procedure sp_who2 (e a similar, sp_who) é muito útil na identificação de locks no banco, consumo de recursos e conexões de usuários. No entanto seu resultado é engessado, e não permite filtros e ordenações. A dica abaixo é muito simples, mas as vezes no dia a dia não paramos para pensar nestas soluções. Recentemente tomei conhecimento desta por meio de um colega de trabalho.

A dica se baseia na criação de uma tabela temporária com as mesmas colunas do resultado de sp_who2, e em seguida insert do resultado desta procedure nesta tabela. Isso obviamente tem que ser repetido a cada vez que se quiser os resultados atuais.

drop table #sp_who2 -- opcional caso a tabela temporária já exista

CREATE TABLE #sp_who2 (SPID INT,Status VARCHAR(255),
      Login  VARCHAR(255),HostName  VARCHAR(255),
      BlkBy  VARCHAR(255),DBName  VARCHAR(255),
      Command VARCHAR(255),CPUTime INT,
      DiskIO INT,LastBatch VARCHAR(255),
      ProgramName VARCHAR(255),SPIDX INT) 

INSERT INTO #sp_who2 EXEC sp_who2

 A tabela temporária (#sp_who2) resultante pode ser consultada e manipulada como se queira, ordenada, filtrada, etc. Por exemplo, obtendo apenas as conexões de determinado host:

SELECT  *
FROM    #sp_who2
where hostname = 'PC-01234'  

Ou ordenar pelo DiskIO:

SELECT  *
FROM    #sp_who2
order by diskio



Nenhum comentário :

Postar um comentário