0

Filtrar error log usando cadena de texto y volcar resultados en una tabla

Como habréis sufrido alguna vez, en ciertas ocasiones es difícil encontrar un error concreto entre todos los registros que se almacenan dentro del error log.  
Para facilitar la tarea podemos usar un procedimiento almacenado llamado sp_readerrorlog con el que podemos leer la información que contiene el log de SQL SERVER y que cuenta con varios parámetros muy útiles para afinar nuestros resultados. 

Os los detallamos aquí:  
1. Log file: Elegimos en que fichero del log queremos buscar, el 0 es el que recoge por defecto. 
2. Elegimos entre log de la instancia (1 o por defecto NULL) o del agente sql  (2). 
3. Cadena de texto a buscar  
4. Cadena de texto secundaria a buscar: busca entre los resultados de la cadena de texto principal. 
5. Inicio de Fecha y Hora: Detalla desde que punto en el tiempo debe buscar. 
6. Final de Fecha y Hora: La fecha y hora final de la búsqueda. 
7. Orden: “ASC” o ”DESC” 

En este caso vamos a utilizarlo para crear una tabla temporal que guarde los intentos fallidos de login, y como podéis ver en los parámetros además elegimos el fichero 0 (el actual) en el log de la instancia (1).  
Vamos a elegir que guarde la fecha y hora, la información del proceso y el texto que del error. 

-- Creamos la base de datos temporal #TmpErrorlog 

CREATE TABLE #TmpErrorLog

(LogDate DATETIME NULL, 

ProcessInfo VARCHAR(20) NULL, 

Text VARCHAR(MAX) NULL ) ; 

 

-- Se ejecuta el sp_readerrorlog con los parámetros elegidos y se guarda en la tabla temporal anteriormente creada 

INSERT INTO #TmpErrorLog (LogDate,ProcessInfo,Text) 

EXEC sp_readerrorlog 1, 1, 'login failed' ; 

 

-- Se muestran los datos de la búsqueda de la tabla temporal y después se borra 

SELECT * FROM #TmpErrorLog 

DROP table #TmpErrorLog

Resultado:

¿Y si quisiéramos buscar en múltiples instancias? 

Podríamos hacerlo mediante Powershell y su comando Invoke-Sqlcmd tal y como explicamos en la parte final de este antiguo post de SICUEL: 

Si tienes alguna pregunta no dudes en dejarnos un comentario o ponerte en contacto con nosotros.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *