Compreendendo notificações de eventos versus gatilhos
A tabela a seguir compara e contrasta gatilhos e notificações de eventos.
GATILHOS |
NOTIFICAÇÕES DE EVENTOS |
---|---|
Gatilhos DML respondem a eventos de linguagem de manipulação de dados (DML). Gatilhos DDL respondem a eventos de linguagem de definição de dados (DDL). |
Notificações de eventos respondem a eventos DDL e a um subconjunto de eventos de rastreamento SQL. |
Gatilhos podem executar Transact-SQL ou código gerenciado CLR (Common Language Runtime). |
Notificações de eventos não executam código. Em vez disso, enviam mensagens xml a um serviço de Service Broker. |
Gatilhos são processados sincronicamente, dentro do escopo das transações que os acionam. |
Notificações de eventos podem ser processadas de forma assíncrona e não são executadas no escopo das transações que as acionam. |
O consumidor de um gatilho encontra-se estreitamente acoplado ao evento que o aciona. |
O consumidor de uma notificação de eventos encontra-se desacoplado do evento que o aciona. |
Gatilhos devem ser processados no servidor local. |
Notificações de eventos podem ser processadas em um servidor remoto. |
Gatilhos podem ser revertidos. |
Notificações de eventos não podem ser revertidas. |
Os nomes dos gatilhos DML seguem o escopo do esquema. Os nomes dos disparadores DDL seguem o escopo do banco de dados ou do servidor. |
Os nomes das notificações de eventos seguem o escopo do servidor ou do banco de dados. Notificações de eventos em um evento QUEUE_ACTIVATION seguem o escopo de uma fila específica. |
Gatilhos DML são de propriedade do mesmo proprietário das tabelas a que se aplicam. |
O proprietário de uma notificação de eventos em uma fila pode ser diferente do proprietário do objeto a que se aplica. |
Gatilhos têm suporte à cláusula EXECUTE AS. |
Notificações de eventos não têm suporte à cláusula EXECUTE AS. |
Informações de eventos de disparadores DDL podem ser capturadas por meio da função EVENTDATA, que retorna um tipo de dados xml. |
Notificações de eventos enviam informações xml sobre o evento para um serviço de Service Broker. As informações são formatadas no mesmo esquema da função EVENTDATA. |
Metadados sobre gatilhos localizam-se nas exibições de catálogo sys.triggers e sys.server_triggers. |
Metadados sobre notificações de eventos localizam-se nas exibições do catálogo sys.event_notifications e sys.server_event_notifications. |