Progettazione di notifiche degli eventi

Data aggiornamento: 14 aprile 2006

Per progettare una notifica degli eventi, è necessario determinare i fattori seguenti:

  • Ambito della notifica.
  • Istruzione o gruppo di istruzioni Transact-SQL che genera la notifica degli eventi.

Definizione dell'ambito della notifica

È possibile specificare una notifica degli eventi affinché venga generata in risposta a un'istruzione eseguita in tutti gli oggetti del database corrente o in tutti gli oggetti di un'istanza di SQL Server. Le notifiche degli eventi specificate negli eventi QUEUE_ACTIVATION e BROKER_QUEUE_DISABLED sono definite a livello di ambito di query singole. Non tutti gli eventi possono verificarsi in qualsiasi ambito. Gli eventi CREATE_DATABASE, ad esempio, possono verificarsi solo a livello di istanza del server. Una notifica degli eventi creata in un evento ALTER_TABLE, viceversa, può essere programmata per l'esecuzione in tutte le tabelle del database o in tutte le tabelle dell'istanza del server.

Nell'esempio seguente viene inviata una notifica di qualsiasi istruzione ALTER TABLE eseguita nell'istanza del server all'istanza di Service Broker nel database corrente.

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

I collegamenti alle istruzioni Transact-SQL e gli ambiti che possono essere specificati per tali istruzioni sono disponibili nella sezione "Selezione di un'istruzione DDL specifica per la generazione di una notifica degli eventi" riportata di seguito.

Le notifiche degli eventi non vengono generate in risposta a eventi che interessano tabelle temporanee locali o globali e stored procedure.

Definizione di un'istruzione o un gruppo di istruzioni Transact-SQL

È possibile creare notifiche degli eventi affinché vengano generate in risposta agli elementi seguenti:

  • Un'istruzione DDL, un evento di Traccia SQL o un evento di Service Broker specifico
  • Un gruppo predefinito di istruzioni DDL o di eventi di Traccia SQL

Selezione di un'istruzione DDL specifica per la generazione di una notifica degli eventi

È possibile progettare notifiche degli eventi affinché vengano generate in seguito all'esecuzione di un'istruzione Transact-SQL o di una stored procedure specifica. Come illustrato nell'esempio precedente, la notifica degli eventi viene generata dopo un evento ALTER_TABLE.

Un elenco delle singole istruzioni Transact-SQL che possono essere specificate per generare una notifica degli eventi e l'ambito in cui tali notifiche possono essere eseguite sono disponibili in Eventi DDL utilizzabili con le notifiche degli eventi. Questi eventi possono anche essere ottenuti eseguendo una query nella vista del catalogo sys.event_notification_event_types.

[!NOTA] Alcune stored procedure di sistema che eseguono operazioni di tipo DDL possono inoltre generare notifiche degli eventi. Testare le notifiche degli eventi per determinare la loro risposta alle stored procedure di sistema eseguite. Sia l'istruzione CREATE TYPE che la stored procedure sp_addtype, ad esempio, genereranno una notifica degli eventi creata in un evento CREATE_TYPE. La stored procedure sp_rename, invece, non genera notifiche degli eventi.

Selezione di un evento di Traccia SQL per la generazione di una notifica degli eventi

È possibile progettare notifiche degli eventi affinché vengano generate in seguito a un evento di Traccia SQL. La notifica degli eventi seguente, ad esempio, viene generata dopo un evento Object_Created nel server.

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

Per un elenco degli eventi di Traccia SQL che possono generare una notifica degli eventi, vedere Eventi di traccia utilizzabili con le notifiche degli eventi. È inoltre possibile ottenere un elenco di questi eventi eseguendo una query nella vista del catalogo sys.event_notification_event_types. Gli eventi di Traccia SQL possono essere eseguiti solo nell'ambito dell'istanza del server. Per ulteriori informazioni sulle classi di evento di Traccia SQL, vedere Guida di riferimento a SQL Server Profiler.

Selezione di un evento di Service Broker per la generazione di una notifica degli eventi

È possibile progettare notifiche degli eventi affinché vengano generate in seguito a un evento QUEUE_ACTIVATION o BROKER_QUEUE_DISABLED di Service Broker. L'evento QUEUE_ACTIVATION viene generato quando una coda include messaggi da elaborare. Per ulteriori informazioni, vedere Event-Based Activation. L'evento BROKER_QUEUE_DISABLED viene generato se lo stato di una coda è impostato su OFF. Per ulteriori informazioni, vedere Handling Poison Messages.

Selezione di un gruppo predefinito di istruzioni DDL per la generazione di una notifica degli eventi

Una notifica degli eventi può essere generata in seguito all'esecuzione di qualsiasi evento Transact-SQL appartenente a un raggruppamento predefinito di eventi simili. Se, ad esempio, si desidera che una notifica degli eventi venga generata in seguito all'esecuzione di qualsiasi istruzione CREATE TABLE, ALTER TABLE o DROP TABLE, è possibile specificare FOR DDL_TABLE_EVENTS nell'istruzione CREATE EVENT NOTIFICATION. In seguito all'esecuzione di CREATE EVENT NOTIFICATION, gli eventi relativi a un gruppo di eventi vengono aggiunti alla vista del catalogo sys.events.

Per un elenco dei gruppi predefiniti di istruzioni DDL e DML disponibili per le notifiche degli eventi, le istruzioni specifiche di cui fanno parte e l'ambito in cui questi gruppi di eventi possono essere eseguiti, vedere Gruppi di eventi DDL da utilizzare con le notifiche degli eventi.

Selezione di un gruppo predefinito di eventi di Traccia SQL per la generazione di una notifica degli eventi

Una notifica degli eventi può essere generata in seguito all'esecuzione di qualsiasi evento di Traccia SQL appartenente a un raggruppamento predefinito di eventi di traccia simili. Se, ad esempio, si desidera che una notifica degli eventi venga generata in seguito a tutti gli eventi di traccia relativi ai blocchi, che includono gli eventi LOCK_DEADLOCK, LOCK_DEADLOCK_CHAIN, LOCK_ESCALATION e DEADLOCK_GRAPH, è possibile specificare FOR TRC_LOCKS nell'istruzione CREATE EVENT NOTIFICATION.

Per un elenco dei gruppi predefiniti di eventi di Traccia SQL disponibili per le notifiche degli eventi, vedere Gruppi di eventi di traccia da utilizzare con le notifiche di eventi. Tali gruppi possono essere eseguiti solo a livello di istanza del server.

Vedere anche

Concetti

Informazioni sulle notifiche degli eventi
Implementazione di notifiche degli eventi

Altre risorse

EVENTDATA (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

14 aprile 2006

Nuovo contenuto:
  • Aggiunta di una nota in cui si consiglia di testare le notifiche degli eventi per determinarne le risposte alle stored procedure eseguite.
  • Aggiunta di riferimenti alla vista del catalogo sys.event_notification_event_types.

5 dicembre 2005

Contenuto modificato:
  • Aggiunta di informazioni alla sezione "Selezione di un'istruzione DDL specifica per la generazione di una notifica degli eventi" relative alle notifiche degli eventi che possono essere generate dopo l'esecuzione di determinate stored procedure.