Sdílet prostřednictvím


Implementace oznámení událostí

platí pro:SQL Server

Pokud chcete implementovat oznámení události, musíte nejprve vytvořit cílovou službu pro příjem oznámení událostí a pak vytvořit oznámení události.

Důležitý

Zabezpečení dialogového okna Service Broker by mělo být nakonfigurováno pro oznámení událostí, která odesílají zprávy zprostředkovateli služeb na vzdáleném serveru. Zabezpečení dialogového okna musí být nakonfigurováno ručně podle úplného modelu zabezpečení.

Vytvoření cílové služby

Službu zahajující Service Broker nemusíte vytvářet, protože Service Broker obsahuje následující konkrétní typ zprávy a kontrakt pro oznámení událostí.

https://schemas.microsoft.com/SQL/Notifications/PostEventNotification  

Cílová služba, která přijímá oznámení událostí, musí respektovat tento existující kontrakt.

Vytvoření cílové služby:

  1. Vytvořte frontu pro příjem zpráv.

    Poznámka

    Fronta obdrží následující typ zprávy: http://schemas.microsoft.com/SQL/Notifications/QueryNotification.

  2. Vytvořte službu v rámci fronty, která odkazuje na smlouvu o oznámeních událostí.

  3. Vytvořte trasu ve službě, která definuje adresu, do které Service Broker odesílá zprávy pro službu. Pro oznámení událostí, která cílí na službu ve stejné databázi, zadejte ADDRESS = 'LOCAL'.

    Poznámka

    Směrování služby Service Broker určuje službu, která přijímá zprávy s oznámením. Pokud oznámení události cílí na službu na vzdáleném serveru, musí mít zdrojový i cílový server definované trasy, aby se zajistila obousměrná komunikace.

Následující příklad vytvoří frontu, službu ve frontě a trasu ve službě pro zpracování zpráv z kontraktu oznámení události.

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  

Vytvoření oznámení události

Oznámení událostí se vytvářejí pomocí příkazu Transact-SQL CREATE EVENT NOTIFICATION a odstraní se pomocí příkazu DROP EVENT NOTIFICATION. Pokud chcete upravit oznámení o události, musíte oznámení události odstranit a znovu vytvořit.

Následující příklad vytvoří oznámení události CreateDatabaseNotification. Toto oznámení odešle zprávu o všech událostech CREATE_DATABASE, ke kterým došlo na serveru, do služby NotifyService, která byla vytvořena dříve.

CREATE EVENT NOTIFICATION CreateDatabaseNotification  
ON SERVER  
FOR CREATE_DATABASE  
TO SERVICE 'NotifyService', '8140a771-3c4b-4479-8ac0-81008ab17984' ;  

Opatrnost

Oznámení událostí rozpoznávají události CREATE_SCHEMA a definice <schema_element> příkazů CREATE SCHEMA jako samostatné události. Například se vytvoří oznámení události pro události CREATE_SCHEMA a CREATE_TABLE a poté spustíte následující dávkový proces.

CREATE SCHEMA s

CREATE TABLE t1 (col1 int)

V tomto případě se oznámení události vyvolá dvakrát: jednou, když dojde k CREATE_SCHEMA události, a znovu, když dojde k CREATE_TABLE události. Doporučujeme, abyste buď zabránili vytváření oznámení o událostech CREATE_SCHEMA i <schema_element> textech odpovídajících definic CREATE SCHEMA, nebo do aplikace zabudujte logiku, abyste se vyhnuli zachytávání nežádoucích dat událostí.

Vytvořit oznámení události

Pokud chcete vypustit oznámení události

Viz také

získat informace o oznámeních událostí
EVENTDATA (Transact-SQL)