Bei jedem Start des SQL-Servers wird eine neue Errorlog-Datei angelegt. Die alten werden aber nicht sofort überschrieben. Stattdessen werden die letzten 6 beibehalten. Das gleiche kann man auch dediziert auslösen:

EXEC sp_cycle_errorlog

Dabei passiert Folgendes:

  • Datei "errorlog.6" wird gelöscht
  • Datei "errorlog.5" wird in "errorlog.6" umbenannt
  • Datei "errorlog.4" wird in "errorlog.5" umbenannt
  • Datei "errorlog.3" wird in "errorlog.4" umbenannt
  • Datei "errorlog.2" wird in "errorlog.3" umbenannt
  • Datei "errorlog.1" wird in "errorlog.2" umbenannt
  • Datei "errorlog" wird in "errorlog.1" umbenannt
  • Das neue "Errorlog" wird angelegt.

Man kann sich vom SQL-Server die Liste der aktuell verwalteten Errorlogs anzeigen lassen:
EXEC sp_enumerrorlogs

Beispiel:

Archiv-Nr. Datum Protokolldateigröße (Bytes)
0 08/24/2009 17:45 1468
1 08/24/2009 17:40 15956
2 08/23/2009 20:39 30462
3 08/23/2009 19:50 83076
4 08/23/2009 18:35 17160
5 08/23/2009 18:19 32608
6 08/22/2009 17:37 50104

Will man sich ein Errorlog ansehen, dann geht das mittels sp_readerrorlog:
EXEC sp_readerrorlog 0

Oder mit xp_readerrorlog: Hier gibt es mehr Parameter.
EXEC master.dbo.xp_readerrorlog 6, 1, 'Version', NULL, NULL, NULL, N'asc'

  • Nummer des Errorlogs
  • optional: Typ des Errorlogs: 1=SQL Server (Default), 2=SQL Agent
  • optional: Suchstring 1
  • optional: Suchstring 2
  • optional: Suchstring 3
  • optional: Sortierung "asc" (Default) oder "desc"

Mein Kollege Vladimir zeigte mir einen guten, aber undokumentierten Trick, wie die Anzahl der historischen Errorlogs erhöht werden kann. Dazu muss man unter [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer] den Key "NumErrorLogs" (REG_DWORD) z.B. auf "99" setzen. Wobei "MSSQL.1" für die Instanznummer steht. Die Liste der Instanzen und deren Numemrn steht unter [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL].

Hinweis: Wird der Wert von "99" dann wieder auf einen niedrigeren gesetzt, dann muss man selber dafür sorgen, dass die "alten" Errorlogs über der neuen Maximalzahl gelöscht werden.

Leider fand ich dazu so gut wie keine Infos, lediglich auf MS-Connect ist das mal offiziell erwähnt… 😉