Trigger auf Systemobjekte

By Frank Kalis

Posted on Jul 15, 2004 von in SQL Server

Zuerst stellt sich aber die Frage, warum man so etwas machen möchte. Zu den wohl am häufigsten genannten Gründe zählt:

  1. Erstellung eines Triggers auf sysobjects, um die eine oder andere Aktion auszuführen, wenn ein neues Objekt erstellt wird, oder ein bestehendes verändert wird.
  2. Erstellung eines Triggers auf sysusers oder sysxlogins, um bei Erstellung oder Veränderung eines Benutzers Aktionen durchführen zu können.

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:

  1. Herumspielen mit den Systemobjekten ist eine der einfachsten und schnellsten Möglichkeiten, to FUBAR SQL Server (Sorry, nicht stubenrein, deswegen in Englisch ;-) )
  2. Dies ist von Microsoft weder empfohlen noch supported. Und mit einem unsupporteten System, die Hilfe des Microsoft Produkt Supports vielleicht einmal in Anspruch nehmen zu müssen, erscheint auch nicht gerade besonders vielversprechend.
  3. Es gibt keine Garantie, dass Trigger auf Systemobjekten ausgelöst werden.

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.

Tags: Tags:
Dieser Eintrag wurde eingetragen von und ist abgelegt unter SQL Server. Tags: ,

Noch kein Feedback


Formular wird geladen...