Die Lösung zur automatisierten Überwachung der Protokoll-Datei verbirgt sich in einer kleinen Prozedur. Die Prozedur wird mit einem Parameter aufgerufen mit dem die max. Größe der Protokoll-Datei definiert werden kann. Ist die aktuelle Protokoll-Datei größer wird die Prozedur sp_cycle_errorlog ausgeführt. Das Skript wurde auf SQLServerCentral.com geposted.
Hier das Skript, danach die Erläuterung:
Create Procedure procErrorLogMaintenance ( @MaxFileSize int = 10240000 ) AS Declare @CurrentLogFileSize bigint Create Table #LogFileInfo ( [Archive #] tinyint, [Date] datetime, [Log File Size (Byte)] bigint ) Insert #LogFileInfo Exec xp_enumerrorlogs Select @CurrentLogFileSize = [Log File Size (Byte)] From #LogFileInfo Where [Archive #] = 0 If @CurrentLogFileSize > @MaxFileSize Exec sp_cycle_errorlog Drop Table #LogFileInfo Go
Die Prozedur erstellt zunächst eine Tabelle #LogFileInfo in der TempDB. Diese Tabelle wird durch die Prozedur xp_enumerrorlogs mit den Informationen über die aktuellen Protokoll-Dateien (also max. 7 Einträge) gefüllt. Der Datensatz mit der Nummer 0 in der Spalte [Archive #] beinhaltet die Daten der aktuellen Protokoll-Datei. Die Größe der Datei wird aus der Spalte [Log File Size (Byte)] gelesen und mit dem Parameter @MaxFileSize verglichen. Ist die definierte Größe überschritten wird die Prozedur sp_cycle_errorlog ausgeführt. In jedem Fall wird die angelegte Tabelle #LogFileInfo wieder gelöscht. |