SQL Server Troubleshooting? => SQL Errorlogs nicht vergessen!

Trotz vollautomatisierten Monitorings, mit ebenso automatischen Notifications sollte man dennoch (oder gerade deswegen) nicht vergessen, ein paar Dinge manuell nachzusehen, wenn es um das Troubleshooting geht. Monitoring ist nur so gut, wie das was damit abgefangen wird. Also sollte man seine Hausaufgaben machen und wenigstens einen Blick in die Windows- Eventlogs sowie in die SQL Server Errorlogs werfen. Das klingt jetzt ein wenig basic – ist es aber defacto nicht.
Das Schöne an den letzteren (SQL Server Errorlogs) ist, dass sie relativ geschwätzig sind und weitaus mehr Information enthalten als nur Fehlerdaten. Jedesmal wenn SQL Server neu gestartet wird, wird ein neues erzeugt, wobei das aktuelle nur errorlog heißt und keine Endung hat. Seine Vorgänger haben die Endung .1, dann .2 bis errorlog.6. Sieben Stück sind es also, die per Default vorgehalten werden.

Ansehen kann man sich die SQL Server Errorlogs auf verschiedene Art und Weise z.B. über das SQL Server Management Studio oder mit einem beliebigen Text Editor wie z.B. Notepad. Bei Standard- Installationen befinden sich die Logs in folgendem Verzeichnis.

C:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\LOG\

Eines meiner Errorlogs habe ich mir mal mit dem Notepad geöffnet und die ersten paar Zeilen herauskopiert. Zur besseren Übersicht habe ich zwischendurch Zeilen herausgenommen - diese Stellen sind mit zwei Punkten versehen.
Damit verständlich wird weshalb schon der Beginn des Errorlogs so interessant ist, habe ich jeweils ein paar Kommentare in kursiver Schrift eingefügt.
Schauen wir uns das Ganze mal genauer an:

2009-04-06 09:01:17.320 Server Microsoft SQL Server 2005 - 9.00.4035.00 (X64)

Aha, SQL 2005 SP3 auf einer 64-bit- Plattform..

..
Enterprise Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2)

…also Enterprise Edition auf Windows 2003 SP2

..
Server process ID is 6788

…und Process- Identifier 6788 (vor allem dann interessant, wenn zwischen mehreren Instanzen auf einer Maschine unterschieden werden muss)

..

2009-04-06 09:01:17.330 Server -d C:\Programme\Microsoft SQL Server\MSSQL.2\MSSQL\DATA\master.mdf

2009-04-06 09:01:17.330 Server -e C:\Programme\Microsoft SQL Server\MSSQL.2\MSSQL\LOG\ERRORLOG

2009-04-06 09:01:17.330 Server -l C:\Programme\Microsoft SQL Server\MSSQL.2\MSSQL\DATA\mastlog.ldf

somit ist klar wo sich die Master befindet und wohin die Errorlogs geschrieben werden

..
2009-04-06 09:01:19.780 spid4s Server name is 'SUPERSEPP\XXL'.

Jetzt weiß ich auch auf welchen Namen(hier SUPERSEPP) er hör,t und dass es sich um eine Named Instance handelt (hier XXL)….

..
Server is listening on [ 127.0.0.1 <ipv4> 1486].

…und IP Adresse sowie Port werden auch gleich noch mitgeliefert. (auch die Protokolle werden angezeigt)

Innerhalb kürzester Zeit wissen wir also schon relativ viel über unseren SQL Server: Edition, Version, Name, PID, Protokolle usw.

Viele Einträge liefern auch wertvolle Informationen aus dem laufenden Betrieb, so z.B. über erfolgreiche Backups:

..
2009-04-09 03:00:08.330 NULL Database backed up. Database: RESI_1, creation date(time): 2009/04/03(22:….

…oder weniger erfolgreiche

..
BACKUP failed to complete the command BACKUP DATABASE GLXXX. Check the backup application log for detailed…

Im weiteren Schritt gilt es das, bzw. die Errorlogs auf Fehler zu untersuchen. Der einfachste Fall ist eine Suche nach dem Schlagwort „Fehler“ bzw. „Error“ oder auch „Severity“ bzw. „Schweregrad“, je nach Sprachversion eben.
Wichtig ist aber auch, dass es Einträge gibt, die nicht mit “Error” bzw. „Fehler“ einhergehen und dennoch Hinweise auf schwerwiegenden Probleme geben können, wie im Folgenden:

..
2009-04-13 08:00:37.060 spid2s SQL Server has encountered 1 occurrence(s) of I/O requests taking longer than 15 seconds to complete on file [C:\Programme

…hmm, ob man diesem Disk- Subsystem noch trauen kann?...

Zum Schluss noch ein Link zum der unter anderem Themen wie SQL Server Errorlog Monitoring, SQL Server Errorlog- Neuerstellung, sowie das Vorhalten von mehr als insgesamt sieben SQL Server Errorlogs behandelt.

https://code.msdn.microsoft.com/SQLExamples/Wiki/View.aspx?title=ErrorLogMon&version=5