Dela via


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:

  1. Skapa en kö för att ta emot meddelanden.

    Not

    Kön får följande meddelandetyp: http://schemas.microsoft.com/SQL/Notifications/QueryNotification.

  2. Skapa en tjänst i kön som refererar till event notifications-kontraktet.

  3. 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)