SQL Server Error Log Dosyasını Filtreleyerek Okumak(Like or Not Like)
SQL Server Error Log dosyası her DBA’in problem anında, sorunu anlamak ve çözüm üretmek için ilk baktığı yerlerdendir. Biz bu makalede Error Log dosyasının tamamını filtresiz okumayı ve filtreleyerek(Şu kelimeleri içerenler gelsin veya şu kelimeleri içerenler gelmesin) okumayı inceleyeceğiz. Aşağıdaki şekilde Error Log dosyasını filtresiz olarak okuyabilirsiniz.
Error Log Dosyası açıldığında aşağıdaki gibi altı çizili Filter yazan yere tıklayarak filtre koyabilirsiniz.
Message contains text’e error log dosyasında içermesini istediğiniz kelimeyi yazarak Apply filter’a tıkladıktan sonra ok’e basmalısınız. Bu işlemi yaptığımızda aşağıdaki gibi bir sonuca ulaştık. Message kısmında “backed up” içermeyen hiçbir mesaj artık görünmüyor.
Error Log dosyası çok karışık olduğunda sadece görmek istediklerimizi set ederek bu karışıklıktan kurtulabiliyoruz.
Bazen görmek istediklerimizi seçmek yerine görmek istemediklerimizi set etmemiz ve gereksiz bilgilerden arınmış error log dosyasını okumak isteyebilirsiniz. Script kullanarak bu işlemi aşağıdaki gibi gerçekleştirebilirsiniz.
CREATE TABLE #read_error_log ( logdate DATETIME, processinfo VARCHAR(200), errorlogtext VARCHAR(max) ) INSERT INTO #read_error_log EXEC master.dbo.Xp_readerrorlog 0, 1, N'', N'', '20160922 00:00', '20160924' SELECT * FROM #read_error_log where errorlogtext not like '%participating in an%' and errorlogtext not like '%Error: 976, Severity: 14, State: 1.%' and errorlogtext not like '%Log was backed%' ORDER BY logdate DESC TRUNCATE TABLE #read_error_log DROP TABLE #read_error_log
Script’te gördüğünüz gibi Error Log dosyasının tamamını okumak için EXEC master.dbo.Xp_readerrorlog script parçası kullanılıyor. Yukarıdaki scriptte bir çok parametre vererek çalıştırdık. Bu parametreleri açıklayım.
İlk parametre 0 |
Bu şu anki aktif log dosyasını okuduğumuz anlamına geliyor. SQL Server Error Log dosya sayısı ile ilgili “SQL Server Error Log Dosya Sayını Arttırma” isimli makalemi okumanızı tavsiye ederim. |
İkinci parametre 1 |
Bu SQL Server Error Log’u okuduğumuz anlamına geliyor. 2 olsaydı SQL Server Agent Error Log’u okuyor olacaktık. |
Üçüncü parametre N” |
Error Log’daki Message kısmında gelmesini istediğimiz kelime. Yukarda filter’da yaptığımız işlemin kod ile yapılış şekli. Biz N” yazarak bu seçeneği seçmedik. |
Dördüncü parametre N” |
Üçüncü parametre ile aynı. Birden fazla kelime ile aramak isterseniz ikinci filtrenizi bu parametrede belirliyorsunuz. Biz N” yazarak bu seçeneği seçmedik. |
Beşinci parametre ‘20160922 00:00’ |
Başlangıç Tarihi. Hangi tarihten başlayarak arama yapmak istiyorsak buraya o tarihi yazıyoruz. |
Altıncı parametre ‘20160924’ |
Bitiş Tarihi. Hangi tarihe kadar arama yapmak istiyorsak o tarihi yazıyoruz. |
Script’in devamında where errorlogtext not like’lı ifadeler görüyorsunuz. Log dosyasının içersinde görmek istemediğimiz ifadeleri bu not like’lı kısımlara yazıyoruz. Sorgunun sonuna AND NOT LIKE… şeklinde ifadeler ekleyerek görmek istemediğiniz sorgu sayısını arttırabilirsiniz. Bu şekilde sadece ihtiyacımız olan bilgileri içerecek bir Error Log dosyası elde etmiş oluyoruz.