Compartilhar via


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.

Consulte também

Conceitos