
Veja como Filtrar em todos os errorlogs do SQL Server.
Filtrar em todos os errorlogs do SQL Server de uma forma mais prática usando T-SQL é mais simples do que imagina. Todos nós sabemos que as procedures xp_readerrorlog and sp_readerrorlog são muito úteis para buscar essas informações nos arquivos de log do SQL Server certo? Porém essas procedures permitem que busquemos informações em apenas um arquivo.
O que fazer se precisamos buscar em vários arquivos ou em todos os errrorlogs e agent logs do SQL Server de uma única vez?
Exatamente é o que essa procedure que vou colocar abaixo faz. Veja a seguir
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | USE master GO CREATE PROCEDURE dbo.uspFiltrarEmTodosErrorLogs (@TipoDeLog INT = 1, @Filtro NVARCHAR (4000) = '' ) AS BEGIN -- Tabela para listar todos os logs DECLARE @ListaDosLogs TABLE (LogNumber INT , StartDate DATETIME, SizeInBytes INT ) -- Colocar os resultados na tabela DECLARE @Logs TABLE (LogDate DATETIME, ProcessInfo NVARCHAR (4000), Informacao NVARCHAR (4000)) -- Guardando os resultados INSERT INTO @ListaDosLogs EXEC xp_enumerrorlogs @TipoDeLog -- Iterar em todos os logs e coletar todas as linhas de log DECLARE @idx INT = 0 WHILE @idx <= ( SELECT MAX (LogNumber) FROM @ListaDosLogs) BEGIN INSERT INTO @Logs EXEC xp_readerrorlog @idx -- Numero Do Log , @TipoDeLog -- 1=SQL Server log, 2=SQL Agent log , @Filtro -- Filtro , @Filtro SET @idx += 1 END -- Retornar os resultados SELECT * FROM @Logs ORDER BY LogDate DESC END GO |
Abaixo estão exemplos de execução dos scrtips:
1 2 3 4 5 6 | Use master Go Exec dbo.uspFiltrarEmTodosErrorLogs 1, 'ERROR' Go Exec dbo.uspFiltrarEmTodosErrorLogs 2, 'ERROR' Go |
Espero que gostem, não esqueçam de compartilhar com os amigos!
Grande abraço!