Grundlegendes zu Ereignisbenachrichtigungen im Vergleich zu Triggern

Die folgende Tabelle vergleicht Trigger und Ereignisbenachrichtigungen und zeigt vorhandene Unterschiede auf.

TRIGGER

EREIGNISBENACHRICHTIGUNGEN

DML-Trigger reagieren auf DML-Ereignisse (Data Manipulation Language). DDL-Trigger reagieren auf DDL-Ereignisse (Data Definition Language, Datendefinitionssprache).

Ereignisbenachrichtigungen reagieren auf DDL-Ereignisse und eine Teilmenge von SQL-Ablaufverfolgungsereignissen.

Trigger können verwalteten Transact-SQL- oder CLR-Code (Common Language Runtime) ausführen.

Ereignisbenachrichtigungen führen keinen Code aus. Sie senden xml-Nachrichten an einen Service Broker-Dienst.

Trigger werden synchron innerhalb des Bereichs der Transaktionen verarbeitet, die ihre Auslösung bewirken.

Ereignisbenachrichtigungen können asynchron verarbeitet werden und werden nicht innerhalb des Bereichs der Transaktionen ausgeführt, die ihre Auslösung bewirken.

Der Consumer eines Triggers ist eng mit dem Ereignis verkoppelt, das seine Auslösung bewirkt.

Der Consumer einer Ereignisbenachrichtigung ist von dem Ereignis entkoppelt, das seine Auslösung bewirkt.

Trigger müssen auf dem lokalen Server verarbeitet werden.

Ereignisbenachrichtigungen können auf einem Remoteserver verarbeitet werden.

Für Trigger kann ein Rollback durchgeführt werden.

Für Ereignisbenachrichtigungen kann kein Rollback durchgeführt werden.

Die Namen von DML-Triggern stammen aus dem Bereich des Schemas. Die Namen von DDL-Triggern stammen aus dem Bereich der Datenbank oder des Servers.

Die Namen von Ereignisbenachrichtigungen stammen aus dem Bereich des Servers oder der Datenbank. Ereignisbenachrichtigungen für ein QUEUE_ACTIVATION-Ereignis stammen aus dem Bereich einer bestimmten Warteschlange.

DML-Trigger weisen den gleichen Besitzer wie die Tabellen auf, auf die sie angewendet werden.

Der Besitzer einer Ereignisbenachrichtigung für eine Warteschlange kann einen anderen Besitzer als das Objekt aufweisen, auf das diese angewendet wird.

Trigger unterstützen die EXECUTE AS-Klausel.

Ereignisbenachrichtigungen unterstützen die EXECUTE AS-Klausel nicht.

Die Ereignisinformationen von DDL-Triggern können mit der EVENTDATA-Funktion aufgezeichnet werden, die einen xml-Datentyp zurückgibt.

Ereignisbenachrichtigungen senden xml-Ereignisinformationen an einen Service Broker-Dienst. Die Informationen werden für das gleiche Schema formatiert, das auch die EVENTDATA-Funktion verwendet.

Metadaten zu Triggern sind in den sys.triggers- und sys.server_triggers-Katalogsichten enthalten.

Metadaten zu Ereignisbenachrichtigungen sind in den sys.event_notifications- und sys.server_event_notifications-Katalogsichten enthalten.