By Frank Kalis
Zuerst stellt sich aber die Frage, warum man so etwas machen möchte. Zu den wohl am häufigsten genannten Gründe zählt:
Um nun fair zu sein, muß man anmerken daß die eingebauten Funktionen von SQL Server 2000 gerade im Hinblick hierauf bescheiden sind. Die nächste Version verspricht in diesem Bereich deutliche Verbesserungen.
Generell muss man mehrere Anmerkungen machen:
Rein technisch gesehen, kann man zwei "Arten" von Systemtabellen unterscheiden. Während:
use msdb
go
create trigger test on dbo.backupfile
for insert, update, delete
as
select 'Hallo Welt'
drop trigger test
Befehl(e) erfolgreich abgeschlossen.
offensichtlich funktioniert, führt nachfolgendes Statement:
use master
go
create trigger test on dbo.sysobjects
for insert, update, delete
as
select 'Hallo Welt'
zu folgender Fehlermeldung:
Server: Nachr.-Nr. 229, Schweregrad 14, Status 5, Prozedur test, Zeile 4
Die CREATE TRIGGER-Berechtigung ... verweigert.
So, was kann man denn nun machen, wenn man auf die weiter oben erwähnten Ereignisse reagieren möchte oder muß? Nun, man kann einen Trace laufen lassen, der diese Ereignisse aufzeichnet, man könnte auch SQL Server's eingebautes C2 Auditing aktivieren, was allerdings sehr wahrscheinlich einen massiven Overkill darstellt, da es alles aufzeichnet, man könnte Software von Drittanbietern einsetzen, die für solche Zwecke entwickelt wurde oder man wartet auf die nächste Version, die gerade auch in diesem Bereich deutliche Verbesserungen verspricht, wenn es weder zwingend sofort notwendig oder dringend ist.