Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Um eine Ereignisbenachrichtigung zu implementieren, müssen Sie zuerst einen Zieldienst zum Empfangen von Ereignisbenachrichtigungen erstellen und dann die Ereignisbenachrichtigung erstellen.
Von Bedeutung
Die Sicherheit des Dienstbrokerdialogs sollte für Ereignisbenachrichtigungen konfiguriert werden, die Nachrichten an einen Dienstbroker auf einem Remoteserver senden. Die Dialogsicherheit muss entsprechend dem vollständigen Sicherheitsmodell manuell konfiguriert werden.
Erstellen des Zieldiensts
Sie müssen keinen Dienstbroker-initiierenden Dienst erstellen, da der Dienstbroker den folgenden spezifischen Nachrichtentyp und vertrag für Ereignisbenachrichtigungen enthält:
https://schemas.microsoft.com/SQL/Notifications/PostEventNotification
Der Zieldienst, der Ereignisbenachrichtigungen empfängt, muss diesen bereits vorhandenen Vertrag berücksichtigen.
So erstellen Sie einen Zieldienst:
Erstellen Sie eine Warteschlange zum Empfangen von Nachrichten.
Hinweis
Die Warteschlange empfängt den folgenden Nachrichtentyp:
https://schemas.microsoft.com/SQL/Notifications/QueryNotification.Erstellen Sie einen Dienst in der Warteschlange, der auf den Vertrag für Ereignisbenachrichtigungen verweist.
Erstellen Sie eine Route für den Dienst, um die Adresse zu definieren, an die der Dienstbroker Nachrichten für den Dienst sendet. Geben Sie für Ereignisbenachrichtigungen, die auf einen Dienst in derselben Datenbank abzielen, an
ADDRESS = 'LOCAL'.Hinweis
Das Dienstbrokerrouting bestimmt den Dienst, der die Benachrichtigungen empfängt. Wenn die Ereignisbenachrichtigung auf einen Dienst auf einem Remoteserver ausgerichtet ist, müssen sowohl der Quellserver als auch der Zielserver Routen definiert haben, um sicherzustellen, dass die bidirektionale Kommunikation erfolgt.
Im folgenden Beispiel wird eine Warteschlange, ein Dienst in der Warteschlange und eine Route für den Dienst zum Verarbeiten von Nachrichten aus dem Ereignisbenachrichtigungsvertrag erstellt.
CREATE QUEUE NotifyQueue ;
GO
CREATE SERVICE NotifyService
ON QUEUE NotifyQueue
(
[https://schemas.microsoft.com/SQL/Notifications/PostEventNotification]
);
GO
CREATE ROUTE NotifyRoute
WITH SERVICE_NAME = 'NotifyService',
ADDRESS = 'LOCAL';
GO
Erstellen der Ereignisbenachrichtigung
Ereignisbenachrichtigungen werden mithilfe der Transact-SQL CREATE EVENT NOTIFICATION-Anweisung erstellt und mithilfe der DROP EVENT NOTIFICATION-ANWEISUNG gelöscht. Zum Ändern einer Ereignisbenachrichtigung müssen Sie die Ereignisbenachrichtigung ablegen und erneut erstellen.
Im folgenden Beispiel wird die Ereignisbenachrichtigung CreateDatabaseNotificationerstellt. Diese Benachrichtigung sendet eine Nachricht über jedes CREATE_DATABASE Ereignis, das auf dem Server auftritt, an den zuvor erstellten NotifyService Dienst.
CREATE EVENT NOTIFICATION CreateDatabaseNotification
ON SERVER
FOR CREATE_DATABASE
TO SERVICE 'NotifyService', '8140a771-3c4b-4479-8ac0-81008ab17984' ;
Vorsicht
Ereignisbenachrichtigungen erkennen CREATE_SCHEMA Ereignisse und die <schema_element> Definitionen von CREATE SCHEMA-Anweisungen als separate Ereignisse. Beispielsweise wird eine Ereignisbenachrichtigung sowohl für die ereignisse CREATE_SCHEMA als auch für CREATE_TABLE erstellt, und Sie führen den folgenden Batch aus.
CREATE SCHEMA s
CREATE TABLE t1 (col1 int)
In diesem Fall wird die Ereignisbenachrichtigung zweimal ausgelöst: Eine Zeit, zu der das CREATE_SCHEMA-Ereignis auftritt, und erneut, wenn das CREATE_TABLE-Ereignis auftritt. Es wird empfohlen, dass Sie entweder das Erstellen von Ereignisbenachrichtigungen für die CREATE_SCHEMA Ereignisse und die <schema_element> Texte aller entsprechenden CREATE SCHEMA-Definitionen vermeiden oder Logik in Ihre Anwendung erstellen, um unerwünschte Ereignisdaten zu vermeiden.
So erstellen Sie eine Ereignisbenachrichtigung
So legen Sie eine Ereignisbenachrichtigung ab
Siehe auch
Informationen über Ereignisbenachrichtigungen erhalten
EVENTDATA (Transact-SQL)