Muy poco conocemos esta forma de revisar el log de errores desde una ventana de sql.
La sintaxis de xp_readerrorlog es la siguiente:
EXEC xp_ReadErrorLog <LogNumber>, <LogType>,
<SearchTerm1>, <SearchTerm2>,
<StartDate>, <EndDate>, <SortOrder>
Los parámetros son los siguientes
Parameter | Values |
<LogNumber> | Número de log 0, 1, 2 … Por ejemplo el 0 regresa el log actual, mientras que el dos ERRORLOG.2 |
<LogType> | 1 – Leer el log de SQL Server 2 – Leer el log del Agente |
<SearchTerm1> | String a buscar |
<SearchTerm2> | Segundo string a buscar |
<StartDate> | Leer logs desde la fecha |
<EndDate> | Leer logs hasta la fecha |
<SortOrder> | ASC – Ascendente o DESC – Descendente |
Un ejemplo a utilizar podria ser el siguiente:
EXEC master.dbo.xp_readerrorlog 0, 1, 'log', 'backed' ,'20160923','20160924', N'desc';
Este nos arrojaria el log de SQL Server actual, que contenga la palabara log y backed desde Septiembre 23 a septiembre 24 del 2016 en modo descendente.
También podriamos hacer un script que fuera ejecutado diariamente para revisar algun error en el log.
declare @Time_Start datetime;
declare @Time_End datetime;
set @Time_Start=getdate()-2;
set @Time_End=getdate();
-- Create the temporary table
CREATE TABLE #ErrorLog (logdate datetime
, processinfo varchar(255)
, Message varchar(500))
-- Populate the temporary table
INSERT #ErrorLog (logdate, processinfo, Message)
EXEC master.dbo.xp_readerrorlog 0, 1, null, null , @Time_Start, @Time_End, N'desc';
-- Filter the temporary table
SELECT LogDate, Message FROM #ErrorLog
WHERE (Message LIKE '%error%' OR Message LIKE '%failed%') AND processinfo NOT LIKE 'logon'
ORDER BY logdate DESC
-- Drop the temporary table
DROP TABLE #ErrorLog