Ferramenta gratuita para escrever contadores de desempenho para banco de dados MS SQL?

3

Existe alguma ferramenta (gratuita) que lê os contadores de desempenho (Windows 2008 Server, mas o suporte 2003 é um bônus) e os adiciona a um banco de dados do MS SQL Server 2008?

Não precisa ser muito sofisticado, pois, na pior das hipóteses, posso adicionar "rotação de log" por meio de acionadores.

Editar: Para esclarecer, quero ler qualquer Contador de Desempenho (Carga da CPU, Fila de Disco, material do ASP.net) e simplesmente usar o SQL Server como um armazenamento de dados. Tipo como o CSV Logging embutido funciona.

    
por Michael Stum 26.03.2010 / 19:20

3 respostas

2

logman.exe e relog.exe, ferramentas internas do sistema operacional Windows. Consulte Descrição das ferramentas do Windows XP Logman.exe, Relog.exe e Typeperf.exe .

Um pequeno exemplo em Relogging Arquivos de log binário de desempenho para SQL

É verdade que, em teoria, você pode coletar as amostras diretamente para o SQL com o logman, na prática, é melhor coletar em binário e, em seguida, convertê-las em SQL com o relog.

    
por 26.03.2010 / 21:59
2

Então, na verdade, você quer isso como texto simples. O perfmon pode logar diretamente ao sql server mas cria seu próprio schema e tabelas. Pode valer a pena tomar uma decisão no esquema e desenvolver suas próprias visualizações para adicioná-lo, pois, então, qualquer contador adicionado gerará automaticamente os cálculos que você deseja fazer na métrica. O esquema pode ser encontrado aqui . Se você usar o relog, você vai querer usar este artigo para converter as datas / horários

Aqui está uma consulta de exemplo para retornar min max e average agrupados por 30 min. intervalos:

SELECT t2.objectname, t2.countername, 
  DATEADD( minute, 
           (DATEPART(minute,CAST(SUBSTRING(t1.counterdatetime,1,23) AS DATETIME))/30)*30,
                 DATEADD(hour,DATEDIFF(hour,0,CAST(SUBSTRING(t1.counterdatetime,1,23) AS DATETIME)),0)) AS Period,
  AVG(t1.countervalue) AS [Avg], 
  MIN(t1.countervalue) AS [Min],  
  MAX(t1.countervalue) AS [Max]
FROM counterdata t1 INNER JOIN counterdetails t2 ON t2.counterid=t1.counterid
WHERE t2.countername = '% Processor Time' AND t2.instancename = '_Total'
AND t2.objectname = 'Processor'
GROUP BY DATEADD( minute, (DATEPART(minute,CAST(SUBSTRING(t1.counterdatetime,1,23) AS DATETIME))/30)*30,
                  DATEADD(hour,DATEDIFF(hour,0,CAST(SUBSTRING(t1.counterdatetime,1,23) AS DATETIME)),0)),
  t2.objectname, t2.countername
ORDER BY Period
    
por 29.03.2010 / 18:26
1

Eu sei que isso é antigo, mas não vejo nenhuma resposta marcada como aceita, então adicionarei meus dois centavos ...

Eu estava procurando por algo semelhante e encontrei uma ferramenta chamada PolyMon ( link ). Os contadores de desempenho reais são reunidos por um serviço do Windows e, em seguida, armazenados no SQL Server. A interface do usuário de gerenciamento é meio desajeitada, mas funciona e eu configurei cerca de 60 contadores até o momento.

    
por 07.04.2011 / 22:57