Gebeurtenismeldingen implementeren
van toepassing op:SQL Server-
Als u een gebeurtenismelding wilt implementeren, moet u eerst een doelservice maken om gebeurtenismeldingen te ontvangen en vervolgens de gebeurtenismelding te maken.
Belangrijk
Service Broker-dialoogvensterbeveiliging moet worden geconfigureerd voor gebeurtenismeldingen die berichten verzenden naar een servicebroker op een externe server. De beveiliging van dialoogvensters moet handmatig worden geconfigureerd volgens het volledige beveiligingsmodel.
De doeldienst opzetten
U hoeft geen Service Broker-initiërende service te maken omdat Service Broker het volgende specifieke berichttype en contract voor gebeurtenismeldingen bevat:
https://schemas.microsoft.com/SQL/Notifications/PostEventNotification
De doelservice die gebeurtenismeldingen ontvangt, moet aan dit vooraf bestaande contract voldoen.
Een doelservice maken:
Maak een wachtrij om berichten te ontvangen.
Notitie
De wachtrij ontvangt het volgende berichttype:
http://schemas.microsoft.com/SQL/Notifications/QueryNotification
.Maak een service in de wachtrij die verwijst naar het contract voor gebeurtenismeldingen.
Maak een route op de service om het adres te definiëren waarnaar Service Broker berichten voor de service verzendt. Geef
ADDRESS = 'LOCAL'
op voor gebeurtenismeldingen die gericht zijn op een service in dezelfde database.Notitie
Service Broker-routering bepaalt de service die de meldingsberichten ontvangt. Als de gebeurtenismelding is gericht op een service op een externe server, moeten zowel de bronserver als de doelserver routes bevatten die erop zijn gedefinieerd om ervoor te zorgen dat er tweerichtingscommunicatie plaatsvindt.
In het volgende voorbeeld wordt een wachtrij, een service in de wachtrij en een route op de service gemaakt om berichten van het gebeurtenismeldingscontract af te handelen.
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
De gebeurtenismelding maken
Gebeurtenismeldingen worden gemaakt met de Transact-SQL-statement CREATE EVENT NOTIFICATION en verwijderd met de DROP EVENT NOTIFICATION-statement. Als u een gebeurtenismelding wilt wijzigen, moet u de gebeurtenismelding verwijderen en opnieuw maken.
In het volgende voorbeeld wordt de gebeurtenismelding CreateDatabaseNotification
gemaakt. Met deze melding wordt een bericht verzonden over een CREATE_DATABASE
-gebeurtenis op de server naar de eerder gemaakte NotifyService
-service.
CREATE EVENT NOTIFICATION CreateDatabaseNotification
ON SERVER
FOR CREATE_DATABASE
TO SERVICE 'NotifyService', '8140a771-3c4b-4479-8ac0-81008ab17984' ;
Voorzichtigheid
Gebeurtenismeldingen herkennen CREATE_SCHEMA gebeurtenissen en de <schema_element> definities van CREATE SCHEMA-instructies als afzonderlijke gebeurtenissen. Er wordt bijvoorbeeld een gebeurtenismelding gemaakt op zowel de CREATE_SCHEMA- als CREATE_TABLE gebeurtenissen en u voert de volgende batch uit.
CREATE SCHEMA s
CREATE TABLE t1 (col1 int)
In dit geval wordt de gebeurtenismelding twee keer gegenereerd: één keer wanneer de CREATE_SCHEMA gebeurtenis plaatsvindt en opnieuw wanneer de CREATE_TABLE gebeurtenis plaatsvindt. U wordt aangeraden geen gebeurtenismeldingen te maken voor zowel de CREATE_SCHEMA-gebeurtenissen als de <schema_element> teksten van overeenkomstige CREATE SCHEMA-definities of om logica in uw toepassing te bouwen om te voorkomen dat ongewenste gebeurtenisgegevens worden vastgelegd.
Een gebeurtenismelding maken
Een gebeurtenismelding verwijderen
Zie ook
Informatie ophalen over gebeurtenismeldingen