Comparación de las notificaciones de eventos con los desencadenadores
En la siguiente tabla se comparan y contrastan los desencadenadores y las notificaciones de eventos.
DESENCADENADORES |
NOTIFICACIONES DE EVENTOS |
---|---|
Los desencadenadores DML responden a los eventos deL lenguaje de manipulación de datos (DML). Los desencadenadores DDL responden a los eventos deL lenguaje de definición de datos (DDL). |
Las notificaciones de eventos responden a los eventos DDL y a un subconjunto de eventos de seguimiento de SQL. |
Los desencadenadores pueden ejecutar código administrado de Common Language Runtime (CLR) o Transact-SQL. |
Las notificaciones de eventos no ejecutan código. En su lugar, envían mensajes xml a un servicio de Service Broker. |
Los desencadenadores se procesan sincrónicamente, en el ámbito de las transacciones que los activan. |
Las notificaciones de eventos pueden procesarse de forma asincrónica y no se ejecutan en el ámbito de las transacciones que las activan. |
El consumidor de un desencadenador se une estrechamente al evento que lo activa. |
El consumidor de una notificación de eventos se desliga del evento que lo activa. |
Los desencadenadores se deben procesar en el servidor local. |
Las notificaciones de eventos se pueden procesar en un servidor remoto. |
Se pueden revertir los desencadenadores. |
No se pueden revertir las notificaciones de eventos. |
Los nombres de desencadenador DML se encuentran en el ámbito de esquema. Los nombres de desencadenador DDL se encuentran en el ámbito de la base de datos o del servidor. |
Los nombres de notificación de eventos se encuentran en el ámbito de la base de datos o del servidor. Las notificaciones de eventos en un evento QUEUE_ACTIVATION se encuentran en el ámbito de una cola específica. |
El mismo propietario posee los desencadenadores DML y las tablas en que se aplican. |
El propietario de una notificación de eventos en una cola puede tener un propietario diferente que el objeto en el que se aplica. |
Los desencadenadores admiten la cláusula EXECUTE AS. |
Las notificaciones de eventos no admiten la cláusula EXECUTE AS. |
Se puede capturar la información de eventos del desencadenador DDL mediante la función EVENTDATA, que devuelve un tipo de datos xml. |
Las notificaciones de eventos envían información de eventos xml a un servicio de Service Broker. El formato de la información usa el mismo esquema que la función EVENTDATA. |
Los metadatos acerca de los desencadenadores se encuentran en las vistas de catálogo sys.triggers y sys.server_triggers. |
Los metadatos sobre las notificaciones de eventos se encuentran en las vistas de catálogo sys.event_notifications y sys.server_event_notifications. |