SQL Server’da Agent Hata Log’larını Listelemek
Herkese merhaba,
Bu yazıda SQL Server’da Agent hata Log’larını listelemek ilgili bilgi vermeye çalışacağım.
SQL Server’da bazı durumlarda Agent hata Log’larını listelemek isteyebilirsiniz. Aşağıdaki TSQL kodları, mevcut tüm SQL Server Hata Loglarını veya SQL Server Agent Hata Loglarında arama yapacaktır. İlk sonuç listesinde ikinci aramak istediğiniz şeyi arayarak sonuç kümesini daraltabilirsiniz de.
Aşağıdaki kodu kullanarak siz de bu işlemi rahatlıkla yapabilirsiniz.
/*============================================================================
@logFileType= SQL Server Hata Logları için 1, SQL Server Agent Hata Logları için 2
@searchString1 = Aranacak hata kelimesi kelime
@searchString2 = @searchString1 arama sonuçlarını da filtrelemek için
@start = Arama başlangıç tarihi,
@end = Arama bitiş tarihi,
@sortOrder = varsayılan olarak artan olarak ayarlı, azalan şeklinde göstermek ihtiyacınız varsa 'desc' kullanın.
============================================================================*/
DECLARE @logFileType SMALLINT = 1; --SQL Server Hata Logları için 1, SQL Server Agent Hata Logları için 2
DECLARE @searchString1 NVARCHAR(256) = N'requests taking longer than 15 seconds to complete'; --NULL yazarsanız her hatayı gösterir
DECLARE @searchString2 NVARCHAR(256) = NULL; --NULL
DECLARE @start DATETIME = NULL; --'2017-08-05 09:37' --Arama başlangıç tarihi
DECLARE @end DATETIME = NULL; --'2017-08-05 10:37' --Arama bitiş tarihi
DECLARE @sortOrder NVARCHAR(4) = N'desc'; --or N'asc'
DECLARE @logno INT = 0;
DECLARE @ErrorLog NVARCHAR(4000);
DECLARE @ErrorLogPath NVARCHAR(4000);
DECLARE @NumberOfLogfiles INT;
DECLARE @FileList AS TABLE
(
subdirectory NVARCHAR(4000) NOT NULL,
DEPTH BIGINT NOT NULL,
[FILE] BIGINT NOT NULL
);
IF OBJECT_ID('tempdb..#errorlog') IS NOT NULL
DROP TABLE #errorlog;
CREATE TABLE #errorLog
(
LogDate DATETIME,
PrcessInfo VARCHAR(20),
[Text] NVARCHAR(4000)
);
SELECT @ErrorLog = CAST(SERVERPROPERTY(N'errorlogfilename') AS NVARCHAR(4000));
SELECT @ErrorLogPath = SUBSTRING(@ErrorLog, 1, LEN(@ErrorLog) - CHARINDEX(N'\', REVERSE(@ErrorLog))) + N'\';
INSERT INTO @FileList
EXEC xp_dirtree @ErrorLogPath, 0, 1;
IF (@logFileType = 1) --SQL Server Error Log
BEGIN
SET @NumberOfLogfiles =
(
SELECT COUNT(*)
FROM @FileList
WHERE [@FileList].subdirectory LIKE N'ERRORLOG%'
);
END;
ELSE
BEGIN
SET @NumberOfLogfiles =
(
SELECT COUNT(*)
FROM @FileList
WHERE [@FileList].subdirectory LIKE N'SQLAGENT%'
);
END;
WHILE (@logno < @NumberOfLogfiles)
BEGIN
INSERT INTO #errorLog
EXEC master.dbo.xp_readerrorlog @logno,
@logFileType,
@searchString1,
@searchString2,
@start,
@end,
NULL;
SET @logno = @logno + 1;
END;
SELECT *
FROM #errorLog
ORDER BY CASE
WHEN @sortOrder = 'desc' THEN
LogDate
END DESC,
CASE
WHEN @sortOrder = 'asc' THEN
LogDate
END;
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.