Udostępnij za pośrednictwem


Designing Event Notifications

Projekt powiadomienie o zdarzeniu, należy określić następujące czynności:

  • Zakres powiadomienie.

  • The Transact-SQL instrukcja, or group of statements, that raises the zdarzenie powiadomienie.

Uwaga

Powiadomień o zdarzeniach, nie występują w reakcji zdarzenie, które wpływają na tabelach tymczasowych lokalnej lub globalnej i procedur przechowywanych.

Definiowanie powiadomienie zakres

Można określić powiadomienie o zdarzeniu w odpowiedzi na instrukcja na wszystkie obiekty w bieżącej bazie danych lub wszystkie obiekty znajdujące się w instancji SQL Server. Powiadomień o zdarzeniach zdarzenie QUEUE_ACTIVATION i BROKER_QUEUE_DISABLED są o zakresie do pojedynczych kolejek.Nie wszystkie zdarzenia może występować w dowolnym zakres.Zdarzenia CREATE_DATABASE, na przykład może wystąpić tylko poziom wystąpienie serwera.I odwrotnie powiadomienie o zdarzeniu utworzone zdarzenie ALTER_TABLE może programowane występuje na wszystkie tabele w bazie danych lub na wszystkie tabele w wystąpieniu serwera.

W poniższym przykładzie wysyła powiadomienie wszelkich ALTER TABLE Instrukcja Uruchom w wystąpieniu serwera do Service Broker wystąpienie w bieżącej bazie danych.

CREATE EVENT NOTIFICATION log_ddl1 
   ON SERVER 
   FOR ALTER_TABLE 
   TO SERVICE '//Adventure-Works.com/ArchiveService' , 'current database';

Łączy z Transact-SQLinstrukcje i zakresy, które mogą być określone dla nich znajdują się w sekcji "wybór określonego instrukcja DDL na podwyższenie powiadomienie o zdarzeniu" występujący na następnej.

Określanie instrukcja języka Transact-SQL lub grupę z deklaracji

zdarzenie powiadomienia mogą być tworzone w odpowiedzi na następujące:

  • Określonej instrukcja DDL, zdarzenie śledzenia SQL lub Service Broker zdarzenia

  • Grupy wstępnie zdefiniowane instrukcje DDL lub zdarzeń śledzenia SQL

Wybierając określony instrukcja DDL na podwyższenie powiadomienie o zdarzeniu

zdarzenie powiadomienia mogą być zaprojektowane w taki sposób, aby po określonego Transact-SQL Uruchomienie instrukcja lub procedura przechowywana. Jak pokazano w poprzednim przykładzie, to powiadomienie o zdarzeniu występuje po ALTER_TABLE zdarzenie.

Aby uzyskać listę poszczególnych Transact-SQL instrukcje, które mogą być określane podnieść powiadomienie o zdarzeniu i zakres, w którym powiadomień można wykonać, zobacz DDL Events. Zdarzenia te można uzyskać również za pomocą kwerend wysyłanych do sys.event_notification_event_types Służy do wyświetlania katalogu.

Uwaga

Niektóre systemu procedur przechowywanych, które wykonują operacje DDL podobne może również wystrzelić zdarzenie powiadomienia.Test sieci zdarzenie powiadomienia do ustalenia ich reakcji systemu przechowywane procedury, które są uruchamiane.Na przykład, instrukcja CREATE typ i sp_addtype oba przechowywane procedury spowoduje uruchomienie powiadomienie o zdarzeniu utworzonego zdarzenie CREATE_TYPE.

Wybranie określonego zdarzenie śledzenia SQL do podwyższenie powiadomienie o zdarzeniu

Uruchomienie po wystąpieniu zdarzenie śledzenia SQL, można zaprojektować powiadomień o zdarzeniach.Na przykład, następujące powiadomienie o zdarzeniu uruchomieniu po Object_Created zdarzenie na serwerze.

CREATE EVENT NOTIFICATION log_ddl1 
   ON SERVER 
   FOR Object_Created 
   TO SERVICE '//Adventure-Works.com/ArchiveService', 'current database' ;

Aby wyświetlić listę zdarzeń śledzenia SQL, które można podnieść powiadomienie o zdarzeniu, zobacz Trace Events for Use with Event Notifications. Można także uzyskać listę tych zdarzeń za pomocą kwerend wysyłanych do sys.event_notification_event_types Służy do wyświetlania katalogu. Zdarzenia śledzenia SQL mogą być wykonywane tylko w zakresie wystąpienie serwera.Aby uzyskać więcej informacji na temat śledzenia SQL zdarzenie klas, zobacz SQL Server Profiler Reference.

Wybierając nazwę zdarzenie usługa Broker do podwyższenie powiadomienie o zdarzeniu

Powiadomień o zdarzeniach można zaprojektować uruchomienie po QUEUE_ACTIVATION lub BROKER_QUEUE_DISABLED Service Broker zdarzenie. Zdarzenie QUEUE_ACTIVATION zachodzi, gdy kolejka zawiera wiadomości do przetworzenia.Aby uzyskać więcej informacji zobaczAktywacja oparte na zdarzenie.Zdarzenie BROKER_QUEUE_DISABLED zachodzi, gdy stan kolejki jest ustawiony na OFF.Aby uzyskać więcej informacji zobaczObsługa wiadomości typu poison.

Zaznaczanie grupy predefiniowane instrukcje DDL na podwyższenie powiadomienie o zdarzeniu

Powiadomienie o zdarzeniu może wystąpić po dowolnej Transact-SQL zdarzenie, które należy do wstępnie zdefiniowanych grupowanie podobnych zdarzeń jest uruchamiana. Na przykład chcąc powiadomienie o zdarzeniu występuje po wykonaniu każdej instrukcja CREATE tabela, ALTER tabela lub DROP tabela, można określić DDL_TABLE_EVENTS FOR w instrukcja CREATE zgłoszenia zdarzenie.Po CREATE powiadomienie o zdarzeniu wykonuje zdarzenie grupa zostanie dodana do sys.events Służy do wyświetlania katalogu.

Uwaga

W SQL Server 2005, sys.zdarzenies rozwija zdarzenie wpisując tylko to pojedyncze zdarzenie s grup, które są objęte grupy.Zmienia więc zdarzenie objęte zdarzenie grup w SQL Server 2008 nie stosuje się do powiadomień o zdarzeniach, które zostały utworzone w tych grup zdarzeń, w SQL Server 2005.

Aby wyświetlić listę wstępnie zdefiniowanych grup instrukcji DDL i DML, które są dostępne dla zdarzenie zgłoszeń, określonego instrukcji, które obejmują i zakres, w których te zdarzenie grup można wykonać, zobacz DDL Event Groups.

Zaznaczanie grupy predefiniowane zdarzenie śledzenia SQL do Podnieś powiadomienie o zdarzeń

Powiadomienie o zdarzeniu może wystąpić po uruchomieniu wszystkich zdarzeń śledzenia SQL należącej do wstępnie zdefiniowanych grupowanie podobnych śledzenia zdarzeń.Na przykład jeśli powiadomienie o zdarzeniu występującej po wszystkie zdarzenia związane z blokowaniem śledzenia zawiera zdarzenia LOCK_DEADLOCK LOCK_DEADLOCK_CHAIN, LOCK_ESCALATION i DEADLOCK_GRAPH, można określić TRC_LOCKS FOR w instrukcja CREATE zgłoszenia zdarzenie.

Aby uzyskać listę wstępnie zdefiniowanych grup zdarzeń śledzenia SQL, które są dostępne dla powiadomień o zdarzeniach zobacz Trace Event Groups for Use with Event Notifications. Grupy te mogą być wykonać tylko poziom wystąpienie serwera.