Implementieren von Ereignisbenachrichtigungen
Gilt für:SQL Server
Zum Implementieren einer Ereignisbenachrichtigung müssen Sie zuerst einen Zieldienst erstellen, der Ereignisbenachrichtigungen empfängt, und dann die Ereignisbenachrichtigung erstellen.
Wichtig
Service Broker -Dialogsicherheit sollte für Ereignisbenachrichtigungen konfiguriert werden, die Meldungen an einen Service Broker auf einem Remoteserver senden. Die Dialogsicherheit muss manuell entsprechend dem Modell der vollständigen Sicherheit 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, in der Meldungen gespeichert werden.
Hinweis
Die Warteschlange empfängt den folgenden Meldungstyp:
http://schemas.microsoft.com/SQL/Notifications/QueryNotification
.Erstellen Sie einen Dienst für die Warteschlange, der auf den Ereignisbenachrichtigungsvertrag verweist.
Erstellen Sie eine Route für den Dienst, um die Adresse zu definieren, an die der Dienstbroker Nachrichten für den Dienst sendet. Für Ereignisbenachrichtigungen, die an einen Dienst in der gleichen Datenbank gerichtet sind, geben Sie
ADDRESS = 'LOCAL'
an.Hinweis
Das Dienstbrokerrouting bestimmt den Dienst, der die Benachrichtigungen empfängt. Wenn die Ereignisbenachrichtigung an einen Dienst auf einem Remoteserver gerichtet ist, müssen für den Quellserver und den Zielserver Routen definiert sein, damit sichergestellt ist, dass eine bidirektionale Kommunikation stattfindet.
Das folgende Beispiel erstellt eine Warteschlange, einen Dienst für die Warteschlange und eine Route für den Dienst, um Meldungen aus dem Ereignisbenachrichtigungsvertrag zu verarbeiten:
CREATE QUEUE NotifyQueue ;
GO
CREATE SERVICE NotifyService
ON QUEUE NotifyQueue
(
[http://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 verworfen. Wenn Sie eine Ereignisbenachrichtigung ändern möchten, müssen Sie sie löschen und dann neu erstellen.
Im folgenden Beispiel wird die Ereignisbenachrichtigung mit dem Namen CreateDatabaseNotification
erstellt. Diese Ereignisbenachrichtigung sendet eine Meldung zu jedem CREATE_DATABASE
-Ereignis, das auf dem Server auftritt, an den NotifyService
-Dienst, der zuvor erstellt wurde.
CREATE EVENT NOTIFICATION CreateDatabaseNotification
ON SERVER
FOR CREATE_DATABASE
TO SERVICE 'NotifyService', '8140a771-3c4b-4479-8ac0-81008ab17984' ;
Achtung
Ereignisbenachrichtigungen erkennen CREATE_SCHEMA Ereignisse und die <schema_element> Definitionen von CREATE SCHEMA-Anweisungen als separate Ereignisse. Angenommen, eine Ereignisbenachrichtigung wird für die Ereignisse CREATE_SCHEMA und 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 ausgegeben: Einmal beim Auftreten des CREATE_SCHEMA-Ereignisses, und ein zweites Mal beim Auftreten des CREATE_TABLE-Ereignisses. 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 löschen Sie eine Ereignisbenachrichtigung
Weitere Informationen
Abrufen von Informationen zu Ereignisbenachrichtigungen
EVENTDATA (Transact-SQL)
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für