W poprzednim wpisie pokazałem jak przeszukać errorlog w poszukiwaniu pewnego słowa. Error log poddlega roll over, więc np. po restarcie SQL powstaje nowy plik, a porzprzedni jest przekopiowywany na nazwę z nr 1, ten z nr 1 na 2 itd.
Oto skrypt, który wyszuka wskazanych słów we WSZYSTKICH logach:
–Kto wylaczył trace – informacja zapisana w error logu
DECLARE @word1 NVARCHAR(100) DECLARE @word2 NVARCHAR(100) SET @word1 = 'trace’ SET @word2 = 'error’ –ewentualnie wpisz error itp –tabelka pomocnicza – iterujemy przez wszystkie errorlogi, trzeba ustalić ich liczbe DECLARE @FileList AS TABLE ( subdirectory NVARCHAR(4000) NOT NULL , DEPTH BIGINT NOT NULL , [FILE] BIGINT NOT NULL); DECLARE @ErrorLog NVARCHAR(4000), @ErrorLogPath NVARCHAR(4000); –Ustalenie sciezki do katalogu z ERRORLOGiem SELECT @ErrorLog = CAST(SERVERPROPERTY(N’errorlogfilename’) AS NVARCHAR(4000)); SELECT @ErrorLogPath = SUBSTRING(@ErrorLog, 1, LEN(@ErrorLog) – CHARINDEX(N’\’, REVERSE(@ErrorLog))) + N’\’; –wylistowanie katalogu INSERT INTO @FileList EXEC xp_dirtree @ErrorLogPath, 0, 1; –wyliczyć maksymalny numer loga DECLARE @NumberOfLogfiles INT; SET @NumberOfLogfiles = (SELECT COUNT(*) FROM @FileList WHERE [@FileList].subdirectory LIKE N’ERRORLOG%’); –Przeszukac error log DECLARE @i INT SET @i=0 WHILE (@i< @NumberOfLogfiles) BEGIN EXEC Xp_readerrorlog @i, 1, @word1, @word2 SET @i=@i+1 ENDPomysł z http://ask.sqlservercentral.com/questions/99484/number-of-error-log-files.html