Implementera händelsemeddelanden
gäller för:SQL Server
Om du vill implementera ett händelsemeddelande måste du först skapa en måltjänst för att ta emot händelsemeddelanden och sedan skapa händelsemeddelandet.
Viktig
Dialogsäkerhet för Service Broker ska konfigureras för händelsemeddelanden som skickar meddelanden till en tjänstkoordinator på en fjärrserver. Dialogsäkerhet måste konfigureras manuellt enligt den fullständiga säkerhetsmodellen.
Skapa måltjänsten
Du behöver inte skapa en Service Broker-initierande tjänst eftersom Service Broker innehåller följande specifika meddelandetyp och kontrakt för händelsemeddelanden:
https://schemas.microsoft.com/SQL/Notifications/PostEventNotification
Måltjänsten som tar emot händelsemeddelanden måste uppfylla det befintliga kontraktet.
Skapa en måltjänst:
Skapa en kö för att ta emot meddelanden.
Not
Kön får följande meddelandetyp:
http://schemas.microsoft.com/SQL/Notifications/QueryNotification
.Skapa en tjänst i kön som refererar till event notifications-kontraktet.
Skapa en väg i tjänsten för att definiera adressen som Service Broker skickar meddelanden till för tjänsten. För händelsemeddelanden som riktar sig mot en tjänst i samma databas anger du
ADDRESS = 'LOCAL'
.Not
Service Broker-routning avgör vilken tjänst som tar emot aviseringsmeddelandena. Om händelsemeddelandet riktar sig mot en tjänst på en fjärrserver måste både källservern och målservern ha vägar definierade för att säkerställa att dubbelriktad kommunikation sker.
I följande exempel skapas en kö, en tjänst i kön och en väg i tjänsten för att hantera meddelanden från händelsemeddelandekontraktet.
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
Skapa händelsemeddelandet
Händelsemeddelanden skapas med hjälp av Transact-SQL CREATE EVENT NOTIFICATION-instruktionen och tas bort med hjälp av DROP EVENT NOTIFICATION-INSTRUKTIONen. Om du vill ändra ett händelsemeddelande måste du släppa och återskapa händelsemeddelandet.
I följande exempel skapas händelsemeddelandet CreateDatabaseNotification
. Det här meddelandet skickar ett meddelande om alla CREATE_DATABASE
händelser som inträffar på servern till den NotifyService
tjänst som skapades tidigare.
CREATE EVENT NOTIFICATION CreateDatabaseNotification
ON SERVER
FOR CREATE_DATABASE
TO SERVICE 'NotifyService', '8140a771-3c4b-4479-8ac0-81008ab17984' ;
Försiktighet
Händelsemeddelanden identifierar CREATE_SCHEMA händelser och <schema_element> definitioner av CREATE SCHEMA-instruktioner som separata händelser. Till exempel skapas ett händelsemeddelande på både CREATE_SCHEMA och CREATE_TABLE händelser och du kör följande batch.
CREATE SCHEMA s
CREATE TABLE t1 (col1 int)
I det här fallet genereras händelsemeddelandet två gånger: En gång när den CREATE_SCHEMA händelsen inträffar och igen när den CREATE_TABLE händelsen inträffar. Vi rekommenderar att du antingen undviker att skapa händelseaviseringar på både CREATE_SCHEMA-händelserna och <schema_element> texterna i motsvarande CREATE SCHEMA-definitioner eller skapar logik i ditt program för att undvika att samla in oönskade händelsedata.
Skapa ett händelsemeddelande
Så här släpper du ett händelsemeddelande
Se även
Få information om händelsemeddelanden
EVENTDATA (Transact-SQL)