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ą:
Utwórz kolejkę do odbierania komunikatów.
Notatka
Kolejka odbiera następujący typ komunikatu:
http://schemas.microsoft.com/SQL/Notifications/QueryNotification
.Utwórz usługę w kolejce, która odwołuje się do kontraktu powiadomień o zdarzeniach.
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)