Udostępnij za pośrednictwem


CREATE EVENT NOTIFICATION (Transact-SQL)

Tworzy obiekt, który wysyła informacje o bazie danych lub serwera zdarzenie usłudze usługa Broker.zdarzenie powiadomień są tworzone tylko przy użyciu Transact-SQL instrukcje.

Topic link iconKonwencje składni języka Transact-SQL

CREATE EVENT NOTIFICATION event_notification_name 
ON { SERVER | DATABASE | QUEUE queue_name } 
[ WITH FAN_IN ]
FOR { event_type | event_group } [ ,...n ]
TO SERVICE 'broker_service' , { 'broker_instance_specifier' | 'current database' }
[ ; ]

Argumenty

  • event_notification_name
    Jest to nazwa powiadomienie o zdarzeniu.powiadomienie o zdarzeniu Nazwy muszą być zgodne z zasadami identyfikatory i musi być unikatowa w zakresie, w którym zostały utworzone: SERWERA, bazy danych lub object_name.

  • SERWER
    Stosuje się zakres powiadomienie o zdarzeniu do bieżącego wystąpienia programu SQL Server. Jeśli określono, powiadomienie uruchomieniu po zmianie określonego zdarzenie w klauzula na dowolne miejsce w wystąpieniu programu SQL Server.

  • BAZY DANYCH
    Stosuje się zakres powiadomienie o zdarzeniu z bieżącą bazą danych.Jeśli określono, powiadomienie uruchomieniu za każdym razem, gdy wystąpi zdarzenie określone w klauzula FOR w bieżącej bazie danych.

  • KOLEJKI
    Stosuje się zakres powiadomienie do określonej kolejki w bieżącej bazie danych.QUEUE może być określony tylko jeśli dla QUEUE_ACTIVATION lub FOR określony jest również BROKER_QUEUE_DISABLED.

  • queue_name
    Is the name of the queue to which the event notification applies.queue_name can be specified only if QUEUE is specified.

  • Z FAN_IN
    Powoduje, że SQL Server Aby wysłać wiadomość tylko jeden zdarzenie, aby dowolne określony usługa dla wszystkich powiadomień o zdarzeniach:

    • Czy są tworzone na jednego zdarzenie.

    • Czy są tworzone przez ten sam podmiot (określone przez ten sam identyfikator SID).

    • Określić tę samą usługa i broker_instance_specifier.

    • Umożliwia określenie WITH FAN_IN.

    Na przykład trzy zdarzenie powiadomienia są tworzone.Wszystkie zdarzenie powiadomień określić ALTER_TABLE FOR FAN_IN Z tej samej klauzula do usługa i są tworzone przez ten sam identyfikator SID.Po uruchomieniu instrukcja ALTER tabela, wiadomości, które są tworzone przez te trzy zdarzenie powiadomienia są scalane w jedną.Dlatego usługa miejsce docelowe odbiera tylko jeden komunikat zdarzenie.

  • event_type
    Is the name of an event type that causes the event notification to execute.event_type can be a Transact-SQL DDL event type, a SQL Trace event type, or a Service Broker event type.Aby uzyskać listę kwalifikujących się Transact-SQL DDL zdarzenie typów, zobacz DDL Events. For a list of qualifying SQL Trace event types, see Trace Events for Use with Event Notifications.Service Broker event types are QUEUE_ACTIVATION and BROKER_QUEUE_DISABLED.Aby uzyskać więcej informacji zobaczDesigning Event Notifications.

  • event_group
    Jest nazwą grupy wstępnie zdefiniowane Transact-SQL lub typów zdarzeń śledzenia SQL. Po wykonaniu wszelkich zdarzenie, które należy do grupy zdarzenia może wystrzelić powiadomienie o zdarzeniu.Aby wyświetlić listę grup zdarzeń DDL Transact-SQL zdarzenie, które obejmują i zakres, w którym można zdefiniować, zobacz DDL Event Groups. Aby uzyskać listę grup zdarzeń śledzenia i zdarzenie śledzenia, których dotyczą zobacz Trace Event Groups for Use with Event Notifications.

    event_group działa również jako makra, podczas tworzenia powiadomienie o zdarzeniu instrukcja zakończy pracę, dodając zdarzenie typy okładki do sys.events Służy do wyświetlania katalogu.

  • 'broker_service'
    Specifies the target service that receives the event instance data.SQL Server opens one or more conversations to the target service for the event notification.Usługa ta musi przestrzegać takie same SQL Server Zdarzenia typ komunikatu i kontrakt, który jest używany do wysyłania wiadomości. Aby uzyskać więcej informacji zobaczTworzenie Service Broker usług.

    Konwersacji pozostają otwarte do powiadomienie o zdarzeniu zostaje odrzucone.Niektóre błędy, może spowodować, że konwersacji zamknąć wcześniej.Kończenie konwersacji niektórych lub wszystkich jawnie może uniemożliwić odbiera więcej wiadomości usługa miejsce docelowe.

  • { "broker_instance_specifier' | "Bieżąca baza danych" }
    Określa wystąpienie usługa Broker, od którego broker_service został rozwiązany. Wartość dla określonego usługa Broker może być nabyta za pomocą kwerend wysyłanych do service_broker_guid kolumnasys.Databases Służy do wyświetlania katalogu. Użycie "Bieżąca baza danych" , aby określić wystąpienie usługa Broker w bieżącej bazie danych."Bieżąca baza danych" jest rozróżniana wielkość liter literał ciąg znaków.

Remarks

Service Broker zawiera typ komunikatu oraz kontrakt dla zdarzenie powiadomienia.Dlatego Broker Service, usługa inicjujący nie ma ma zostać utworzony, ponieważ istnieje już, określa następujące nazwy kontrakt: https://schemas.microsoft.com/SQL/Notifications/PostEventNotification

Usługa miejsce docelowe, która odbiera zdarzenie powiadomień musi przestrzegać tego kontrakt gotowe.Aby uzyskać więcej informacji na temat tworzenia Service Broker miejsce docelowe usług, zobacz Korzyści wynikające z programowanie z usługa Broker.

Important noteImportant Note:

Service Broker okno dialogowe zabezpieczeń, należy skonfigurować dla zdarzenie powiadomienia, które wysyłają wiadomości do usługa Broker na serwerze zdalnym.Okno dialogowe zabezpieczeń muszą być skonfigurowane ręcznie pełne zabezpieczenia modelu.Aby uzyskać więcej informacji zobaczDialog Security for Event Notifications.

Jeżeli transakcja zdarzeń, który uaktywnia powiadomienia zostanie przywrócona, wysyłanie powiadomienie o zdarzeniu jest również przywracane.zdarzenie powiadomienia nie uruchomienie akcja zdefiniowanych w wyzwalacz, gdy transakcja jest zatwierdzona lub jej wycofania wewnątrz wyzwalacza.Ponieważ śledzenia zdarzenie s nie są związani transakcji, zdarzenie były wysyłane powiadomienia oparte na śledzenia zdarzenie s, niezależnie od tego, czy transakcja, który uaktywnia je zostanie przywrócona.

W przypadku komunikacji między serwerem a usługa docelowe zostaje przerwane po powiadomienie o zdarzeniu uruchamiany, po zgłoszeniu błędu oraz powiadomienie o zdarzeniu zostaje odrzucone.

Transakcja zdarzenie, która pierwotnie uruchomiony powiadomienie nie jest zagrożony Powodzenie lub niepowodzenie wysyła powiadomienie o zdarzeniu.

Niepowodzenie wysyłania powiadomienie o zdarzeniu jest rejestrowany.

Uprawnienia

Utworzono powiadomienie o zdarzeniu, jest objęty zakresem, w bazie danych (ON DATABASE) wymaga uprawnienia CREATE DATABASE DDL zdarzenie zgłoszenia w bieżącej bazie danych.

Aby utworzyć powiadomienie o zdarzeniu w instrukcja DDL, która obejmuje zasięgiem do serwera (serwera ON), wymaga uprawnienia CREATE zgłoszenia zdarzenie DDL na serwerze.

Aby utworzyć powiadomienie o zdarzeniu na zdarzenia śledzenia, wymaga uprawnienia CREATE TRACE zdarzenie zgłoszenia na serwerze.

Aby utworzyć powiadomienie o zdarzeniu, jest objęty zakresem, do kolejki, wymaga ALTER uprawnień dla kolejki.

Przykłady

Uwaga

W przykłady A i B poniżej, identyfikator GUID w TO SERVICE 'NotifyService' Klauzula ("8140a771-3c4b-4479-8ac0-81008ab17984") jest specyficzne dla komputera, na którym został przykład zestaw zapasowych. Dla tego wystąpienie, które były identyfikatora GUID dla bazy danych AdventureWorks.

Do kopiowania i uruchamiania tych przykładów, należy zastąpić ten identyfikator GUID z jednym z komputera i SQL Server wystąpienie. Jak wyjaśniono w poprzedniej sekcji argumenty, które mogą uzyskiwać "broker_instance_specifier" za pomocą kwerend wysyłanych do kolumna service_broker_guid sys.databases widoku wykazu.

A.Tworzenie zdarzenie powiadomienie, który jest serwerem o zakresie

W poniższym przykładzie tworzone obiekty wymagane do konfigurowania usługa miejsce docelowe przy użyciu Service Broker. Usługa miejsce docelowe odwołuje się do typu komunikatu i kontrakt usługi inicjujący specjalnie dla powiadomień o zdarzeniach.A następnie na tej usługa docelową, która wysyła powiadomienie powiadomienie o zdarzeniu jest tworzona za każdym razem, gdy Object_Created zdarzenie śledzenia się dzieje w wystąpieniu SQL Server.

B.Tworzenie powiadomienie o zdarzeniu jest baza danych o zakresie

Poniższy przykład tworzy powiadomienie o zdarzeniu na tej samej usługa miejsce docelowe w poprzednim przykładzie.Powiadomienie o zdarzeniu uruchomieniu po ALTER_TABLE Zdarzenie zachodzi na AdventureWorks Przykładowa baza danych.

C.Uzyskiwanie informacji powiadomienie o zdarzeniu to jest serwer o zakresie

W następujących przykładowych kwerendach sys.server_event_notifications katalogowanie widoku metadane o powiadomienie o zdarzeniu log_ddl1 który został utworzony za pomocą zakres serwera.

D.Uzyskiwanie informacji zdarzenie powiadomienie, które jest bazą danych o zakresie

W następujących przykładowych kwerendach sys.event_notifications wyświetlanie katalogu metadane powiadomienie o zdarzeniu Notify_ALTER_T1 który został utworzony za pomocą zakres bazy danych.