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!
Обзор свежих гэмблинг-платформ с простым доступом через смартфоны. В прошедшие времена новые казино с простым…