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. |