Gestern fragte mich ein Kollege, wie man bestimmte Informationen in das Ereignisprotokoll des Windows-Server auf dem der SQL-Server läuft protokollieren kann. Dazu gibt es zwei Möglichkeiten, die beide sowohl mit Version 2000 und Version 2005 funktionieren.

Fehler werfen

Man kann einen Fehler "with log" werfen. Der Fehler wird an den Client geschickt und in der Ereignisanzeige protokolliert. Je nach Severity wird ein Fehler, Warnung oder Information geworfen. Das dürfen übrigens nur SysAdmins.

raiserror ('Dieser Text soll im Eventlog stehen (als Information)', 1,1) with log
raiserror ('Dieser Text soll im Eventlog stehen (als Warning)', 15,1) with log
raiserror ('Dieser Text soll im Eventlog stehen (als Fehler)', 16,1) with log

Meldung nur in Ereignisanzeige schreiben

Man kann die Meldung mit xp_logevent aber auch einfach nur wegloggen, ohne einen Fehler an den Client zu schicken. Das dürfen auch nur SysAdmins.

EXEC master.dbo.xp_logevent 60000, 'Dieser Text soll im Eventlog stehen (als Info)', informational
EXEC master.dbo.xp_logevent 60000, 'Dieser Text soll im Eventlog stehen (als Warning)', warning
EXEC master.dbo.xp_logevent 60000, 'Dieser Text soll im Eventlog stehen (als Fehler)', error

Zur Kontrolle muss man jetzt ins Eventlog schauen. Die XP xp_eventlog zum Lesen aus der Ereignisanzeige gibt es ja leider nicht mehr… schnüff