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:
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
.Vytvořte službu v rámci fronty, která odkazuje na smlouvu o oznámeních událostí.
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)