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. |