Share via


Informazioni sulle notifiche degli eventi

Le notifiche degli eventi vengono eseguite in risposta a una serie di istruzioni DDL (Data Definition Language) Transact-SQL ed eventi di Traccia SQL mediante l'invio di informazioni sugli eventi a un servizio Service Broker.

È possibile utilizzare le notifiche degli eventi per eseguire le attività seguenti:

  • Registrare e visualizzare le modifiche o le attività riscontrate sul database.

  • Eseguire un'operazione in risposta a un evento in modo asincrono anziché sincrono.

Le notifiche degli eventi possono costituire un'alternativa a trigger DDL e Traccia SQL a livello di programmazione.

Le notifiche degli eventi vengono eseguite in modo asincrono, all'esterno dell'ambito di una transazione. A differenza dei trigger DDL, è pertanto possibile utilizzare le notifiche degli eventi all'interno di un'applicazione di database per rispondere a eventi senza utilizzare le risorse definite dalla transazione immediata. Per ulteriori informazioni, vedere Informazioni sulle differenze fra notifiche degli eventi e trigger.

A differenza di Traccia SQL, è possibile utilizzare le notifiche degli eventi per eseguire un'operazione all'interno di un'istanza di SQL Server in risposta a un evento di Traccia SQL. Per ulteriori informazioni, vedere Informazioni sul confronto tra notifiche degli eventi e Traccia SQL.

Durante la creazione di una notifica degli eventi, vengono aperte una o più conversazioni Service Broker tra un'istanza di SQL Server e il servizio di destinazione specificato. Tali conversazioni rimangono in genere aperte finché la notifica degli eventi è disponibile come oggetto nell'istanza del server. In alcune situazioni di errore è possibile che le conversazioni vengano chiuse prima dell'eliminazione della notifica. Le conversazioni non vengono mai condivise tra le notifiche degli eventi. A ogni notifica sono associate conversazioni esclusive. Se una conversazione viene terminata in modo esplicito, il servizio di destinazione non potrà più altri messaggi e la conversazione non verrà riaperta alla successiva attivazione della notifica degli eventi.

Le informazioni sugli eventi vengono fornite a Service Broker sotto forma di variabile di tipo xml. Tale variabile fornisce informazioni relative al momento in cui si verifica l'evento, all'oggetto di database interessato, all'istruzione batch Transact-SQL, nonché informazioni di altro tipo. Per ulteriori informazioni sull'XML Schema prodotto dalle notifiche degli eventi, vedere EVENTDATA (Transact-SQL).

I dati degli eventi possono essere utilizzati in applicazioni eseguite contestualmente a SQL Server per tenere traccia dello stato di avanzamento e per prendere decisioni. La notifica degli eventi seguente, ad esempio, invia un avviso a un determinato servizio ogni volta che viene eseguita un'istruzione ALTER TABLE nel database di esempio AdventureWorks2008R2.

USE AdventureWorks2008R2;
GO
CREATE EVENT NOTIFICATION NotifyALTER_T1
ON DATABASE
FOR ALTER_TABLE
TO SERVICE '//Adventure-Works.com/ArchiveService' ,
    '8140a771-3c4b-4479-8ac0-81008ab17984';

In Esempi del Motore di database di SQL Server è disponibile EventNotificationSample.sql, uno script di esempio relativo alle notifiche degli eventi che può essere eseguito sul database di esempio AdventureWorks2008R2.