Condividi tramite


Informazioni sulle differenze fra notifiche degli eventi e trigger

Nella tabella seguente viene eseguito il confronto fra trigger e notifiche di eventi.

TRIGGER

NOTIFICHE DI EVENTI

I trigger DML rispondono agli eventi DML (Data Manipulation Language). I trigger DLL rispondono agli eventi DLL (Data Definition Language).

Le notifiche degli eventi rispondono agli eventi DDL e a un subset di eventi di traccia SQL.

I trigger possono eseguire codice gestito Transact-SQL o CLR (Common Language Runtime).

Le notifiche degli eventi non eseguono codice, ma inviano messaggi xml a un servizio di Service Broker.

I trigger vengono elaborati in modo sincrono nell'ambito delle transazioni che ne provocano l'attivazione.

Le notifiche degli eventi possono essere elaborate in modo asincrono e non vengono eseguite nell'ambito delle transazioni che le attivano.

Il consumer di un trigger è strettamente associato all'evento che lo attiva.

Il consumer di una notifica degli eventi non è associato all'evento che la attiva.

I trigger devono essere elaborati nel server locale.

Le notifiche degli eventi possono essere elaborate in un server remoto.

Il rollback dei trigger è possibile.

Il rollback delle notifiche degli eventi non è possibile.

L'ambito dei nomi dei trigger DML è lo schema. L'ambito dei nomi dei trigger DDL è il server o il database.

L'ambito dei nomi delle notifiche degli eventi è il server o il database. Le notifiche degli eventi in un evento QUEUE_ACTIVATION sono definiti a livello di ambito di una coda specifica.

Il proprietario dei trigger DML è il proprietario delle tabelle sulle quali vengono applicati.

Il proprietario di una notifica degli eventi in una coda può essere diverso dal proprietario dell'oggetto al quale viene applicata.

I trigger supportano la clausola EXECUTE AS.

Le notifiche degli eventi non supportano la clausola EXECUTE AS.

Le informazioni sull'evento di un trigger DDL possono essere acquisite mediante la funzione EVENTDATA, che restituisce un tipo di dati xml.

Le notifiche degli eventi inviano informazioni xml sull'evento a un servizio di Service Broker. Le informazioni vengono formattate con lo stesso schema della funzione EVENTDATA.

I metadati relativi ai trigger si trovano nelle viste del catalogo sys.triggers e sys.server_triggers,

I metadati relativi alle notifiche degli eventi si trovano nelle viste del catalogo sys.event_notifications e sys.server_event_notifications.