Um problema comum que recebo emails pedindo ajuda é que o SQL Server Error Log é muito grande e não é fácil de visualizar o conteúdo com o Visualizador de Log File.
Certo, posso ver através de VBScript e outras formas, mas e T-SQL, é possível?
O SQL Server possui um procedimento chamado xp_readerrorlog. Que permite ler o conteúdo dos arquivos de log do SQL Server diretamente a partir de uma query e também permite a busca por palavras-chave e datas específicas.
xp_readerrorlog <LogNumber>, <LogType>, <SearchTerm1>,<SearchTerm2>, <StartDate>, <EndDate>, <SortOrder>
Neste exemplo eu precisava encontrar todos os eventos de deadlock que recebi no meu banco de dados em um determinado período.
Pra isso verifiquei que a cada nova entrada de um Deadlock eu tenho no errorlog a seguinte entrada: Deadlock encountered
Com essa informação eu pude rodar a consulta e trazer todos os momentos em que tive um Deadlock no período do meu log.
xp_readerrorlog 1, 1, ‘Deadlock encountered’
Depois disso com essas informações podem realizar as mais diversas análises sobre os dados. Segue uma ideia do trabalho que realizei e pode-se notar no exemplo que a partir do dia 03 de fevereiro alguma coisa mudou no ambiente:
Bom proveito, espero que a dica ajude.
Até mais.
2000 deadlocks por dia? caramba… 😛
Muito bom Marcus. Recentemente postei um artigo no meu blog sobre esse assunto. É realmente muito útil fazer a leitura de logs muito longos, usando a xp_readerrorlog.