Udostępnij za pośrednictwem


Implementowanie powiadomień o zdarzeniach

Dotyczy:programu SQL Server

Aby zaimplementować powiadomienie o zdarzeniu, należy najpierw utworzyć usługę docelową w celu otrzymywania powiadomień o zdarzeniach, a następnie utworzyć powiadomienie o zdarzeniu.

Ważny

Zabezpieczenia okna dialogowego usługi Service Broker należy skonfigurować pod kątem powiadomień o zdarzeniach, które wysyłają komunikaty do brokera usług na serwerze zdalnym. Zabezpieczenia okna dialogowego należy skonfigurować ręcznie zgodnie z pełnym modelem zabezpieczeń.

Tworzenie usługi docelowej

Nie musisz tworzyć usługi inicjowania usługi Service Broker, ponieważ usługa Service Broker zawiera następujący konkretny typ komunikatu i kontrakt dla powiadomień o zdarzeniach:

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

Usługa docelowa, która odbiera powiadomienia o zdarzeniach, musi przestrzegać tego istniejącego kontraktu.

Aby utworzyć usługę docelową:

  1. Utwórz kolejkę do odbierania komunikatów.

    Notatka

    Kolejka odbiera następujący typ komunikatu: http://schemas.microsoft.com/SQL/Notifications/QueryNotification.

  2. Utwórz usługę w kolejce, która odwołuje się do kontraktu powiadomień o zdarzeniach.

  3. Utwórz trasę w usłudze, aby zdefiniować adres, na który Service Broker wysyła komunikaty dla określonej usługi. W przypadku powiadomień o zdarzeniach przeznaczonych dla usługi w tej samej bazie danych określ ADDRESS = 'LOCAL'.

    Notatka

    Routing usługi Service Broker określa usługę, która odbiera komunikaty powiadomień. Jeśli powiadomienie o zdarzeniu jest przeznaczone dla usługi na serwerze zdalnym, zarówno serwer źródłowy, jak i serwer docelowy muszą mieć zdefiniowane trasy, aby upewnić się, że nastąpi dwukierunkowa komunikacja.

Poniższy przykład tworzy kolejkę, usługę w kolejce i trasę w usłudze do obsługi komunikatów z kontraktu powiadomień o zdarzeniach.

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  

Tworzenie powiadomienia o zdarzeniu

Powiadomienia o zdarzeniach są tworzone przy użyciu instrukcji CREATE EVENT NOTIFICATION Transact-SQL i są porzucane przy użyciu INSTRUKCJI DROP EVENT NOTIFICATION. Aby zmodyfikować powiadomienie o zdarzeniu, należy usunąć i ponownie utworzyć powiadomienie o zdarzeniu.

Poniższy przykład tworzy powiadomienie o zdarzeniu CreateDatabaseNotification. To powiadomienie wysyła komunikat o każdym zdarzeniu CREATE_DATABASE, które występuje na serwerze do usługi NotifyService, która została wcześniej utworzona.

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

Ostrożność

Powiadomienia o zdarzeniach rozpoznają zdarzenia CREATE_SCHEMA i definicje <schema_element> instrukcji CREATE SCHEMA jako oddzielne zdarzenia. Na przykład powiadomienie o zdarzeniu jest tworzone zarówno na zdarzeniach CREATE_SCHEMA, jak i CREATE_TABLE, a następnie uruchamiana jest następująca partia.

CREATE SCHEMA s

CREATE TABLE t1 (col1 int)

W takim przypadku powiadomienie o zdarzeniu jest zgłaszane dwa razy: jeden raz, gdy wystąpi zdarzenie CREATE_SCHEMA, i ponownie, gdy wystąpi zdarzenie CREATE_TABLE. Zalecamy, aby unikać tworzenia powiadomień o zdarzeniach zarówno dla zdarzeń CREATE_SCHEMA, jak i tekstów <schema_element> związanych z definicjami CREATE SCHEMA, albo opracować logikę w aplikacji, aby zapobiec przechwytywaniu niepożądanych danych dotyczących zdarzeń.

Aby utworzyć powiadomienie o zdarzeniu

Aby usunąć powiadomienie o zdarzeniu

Zobacz też

Uzyskaj informacje o powiadomieniach o wydarzeniach
EVENTDATA (Transact-SQL)