Implementieren von Ereignisbenachrichtigungen

Aktualisiert: 05. Dezember 2005

Zum Implementieren einer Ereignisbenachrichtigung müssen Sie zuerst einen Zieldienst erstellen, der Ereignisbenachrichtigungen empfängt, und dann die Ereignisbenachrichtigung erstellen.

ms178080.note(de-de,SQL.90).gifWichtig:
Die Service Broker-Dialogsicherheit sollte für Ereignisbenachrichtigungen konfiguriert werden, die Meldungen an einen Service Broker auf einem Remoteserver senden. Die Dialogsicherheit muss entsprechend dem Modell für die vollständige Sicherheit manuell konfiguriert werden. Weitere Informationen finden Sie unter Dialogsicherheit für Ereignisbenachrichtigungen.

Erstellen des Zieldienstes

Sie müssen keinen Dienst zum Initiieren von Service Broker erstellen, da Service Broker den folgenden speziellen Meldungstyp 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:

  1. Erstellen Sie eine Warteschlange, in der Meldungen gespeichert werden.
    ms178080.note(de-de,SQL.90).gifHinweis:
    Die Warteschlange empfängt den folgenden Meldungstyp: https://schemas.microsoft.com/SQL/Notifications/QueryNotification.
  2. Erstellen Sie einen Dienst für die Warteschlange, der auf den Ereignisbenachrichtigungsvertrag verweist.
  3. Erstellen Sie eine Route für den Dienst, um die Adresse zu definieren, an die Service Broker Meldungen für den Dienst sendet. Für Ereignisbenachrichtigungen, die an einen Dienst in der gleichen Datenbank gerichtet sind, geben Sie ADDRESS = 'LOCAL' an.
    ms178080.note(de-de,SQL.90).gifHinweis:
    Das Service Broker-Routing bestimmt den Dienst, der die Benachrichtigungsmeldungen 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. Weitere Informationen finden Sie unter Service Broker-Routing.

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
(
[https://schemas.microsoft.com/SQL/Notifications/PostEventNotification]
);
GO
CREATE ROUTE NotifyRoute
WITH SERVICE_NAME = 'NotifyService',
ADDRESS = 'LOCAL';
GO

Weitere Informationen zum Erstellen von Service Broker-Zieldiensten finden Sie unter Introduction to Service Broker Programming.

Erstellen der Ereignisbenachrichtigung

Ereignisbenachrichtigungen werden mithilfe der Transact-SQL CREATE EVENT NOTIFICATION-Anweisung erstellt und mithilfe von DROP EVENT NOTIFICATION gelöscht. 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' ;
ms178080.Caution(de-de,SQL.90).gifVorsicht:
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, entweder keine Ereignisbenachrichtigungen für die CREATE_SCHEMA-Ereignisse und gleichzeitig für die <schema_element>-Texte von entsprechenden CREATE SCHEMA-Definitionen zu erstellen, oder Ihre Anwendung so zu programmieren, dass keine nicht erwünschten Ereignisdaten erfasst werden.

So erstellen Sie eine Ereignisbenachrichtigung

So löschen Sie eine Ereignisbenachrichtigung

Siehe auch

Konzepte

Grundlegendes zu Ereignisbenachrichtigungen
Entwerfen von Ereignisbenachrichtigungen
Abrufen von Informationen zu Ereignisbenachrichtigungen

Andere Ressourcen

EVENTDATA (Transact-SQL)

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

05. Dezember 2005

Neuer Inhalt:
  • Einen Hinweis hinzugefügt, dass Ereignisbenachrichtigungen, die für CREATE_SCHEMA-Ereignisse und die <schema_element>-Definitionen von CREATE SCHEMA-Anweisungen erstellt werden, unbeabsichtigt zweimal ausgelöst werden können.
Geänderter Inhalt:
  • Den Abschnitt über die Dialogsicherheit von Ereignisbenachrichtigungen dahin gehend geändert, dass die Benutzer auf ein anderes Thema verwiesen werden.