
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
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:
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!