Hola, en esta entrada de hoy, vamos a explicaros una de las tareas básicas de un DBA o administrador de base de datos. Se trata de leer el log de SQL Server. En esta entrada, nos centremos en SQL Server. Aún así, es importante saber mirar el log en cualquier base de datos que administremos, comencemos.

¿Cómo leer el log de SQL Server?
En primer lugar, debemos saber, que necesitaríamos permisos al menos de securityadmin. Una vez tengamos estos permisos, podremos continuar.
Podemos ver el log de SQL Server de dos formas, a nivel gráfico mediante SSMS o a través de consultas T-SQL como es el caso de hoy.
Existe un procedimiento almacenado indocumentado de Microsoft que se llama sp_readerrorlog. Este a su vez, realiza una llamada sobre xp_readerrorlog. Si vemos la creación de xp_readerrorlog, observamos lo siguiente:
CREATE PROC [sys].[sp_readerrorlog]( @p1 INT = 0, @p2 INT = NULL, @p3 VARCHAR(255) = NULL, @p4 VARCHAR(255) = NULL) AS BEGIN IF (NOT IS_SRVROLEMEMBER(N'securityadmin') = 1) BEGIN RAISERROR(15003,-1,-1, N'securityadmin') RETURN (1) END IF (@p2 IS NULL) EXEC sys.xp_readerrorlog @p1 ELSE EXEC sys.xp_readerrorlog @p1,@p2,@p3,@p4 END
Este proceso tiene 4 parámetros:
- Value of error log file you want to read: 0 = current, 1 = Archive #1, 2 = Archive #2, etc…
- Log file type: 1 or NULL = error log, 2 = SQL Agent log
- Search string 1: String one you want to search for
- Search string 2: String two you want to search for to further refine the results
Si no se pasa ningún parámetro, el procedimiento devolverá el contenido del registro de errores actual.
Ejemplos de uso de sp_readerrorlog
Ver el fichero de log de hace una semana.
Para ver el fichero del log de errores de hace una semana deberemos ejecutar:
EXEC sp_readerrorlog 6
En caso de querer ver el log de errores del día anterior, deberíamos introducir el número 1, ya que el número 0 es el fichero de log actual.
EXEC sp_readerrorlog 1
Filtrar resultados de sp_readerrorlog
Se podrían buscar resultados de la siguiente forma:
EXEC sp_readerrorlog 6, 1, 'texto a buscar'
De esta forma podríamos filtrar: un usuario, base de datos, un texto, un login,backup,etc.
En caso de que queramos buscar entre los resultados de ejecución de los jobs, deberíamos cambiar 1 de la consulta anterior, por un 2.
Esperamos que os haya sido de utilidad. No dudéis en suscribiros a nuestra newsletter mensual para estar al día de todas nuestras publicaciones.
¿Aún no conoces Query Performance? Descubre cómo puede ayudarte en tu entorno Oracle. Más información en su página de LinkedIn.
Sígue a GPS en LinkedIn