Share via


Compreendendo notificações de eventos

As notificações de eventos são executadas em resposta a uma variedade de instruções DDL do Transact-SQL e eventos de rastreamento do SQL por meio do envio de informações sobre os eventos a um serviço de Service Broker.

Notificações de eventos podem ser usadas para fazer o seguinte:

  • Registrar em log e examinar alterações ou atividade ocorridas no banco de dados.

  • Executar uma ação em resposta a um evento de maneira assíncrona, em vez de síncrona.

Notificações de eventos podem constituir uma alternativa de programação a disparadores DDL e ao rastreamento do SQL.

Notificações de eventos são executadas de forma assíncrona, fora do escopo de uma transação. Portanto, ao contrário de disparadores DDL, as notificações de eventos podem ser usadas dentro de um aplicativo de banco de dados para responder a eventos sem usar nenhum recurso definido pela transação imediata. Para obter mais informações, consulte Compreendendo notificações de eventos versus gatilhos.

Ao contrário do rastreamento do SQL, as notificações de eventos podem ser usadas para executar uma ação dentro de uma instância do SQL Server em resposta a um evento do rastreamento do SQL. Para obter mais informações, consulte Compreendendo notificações de eventos versus rastreamento do SQL.

Quando uma notificação de eventos é criada, uma ou mais conversações de Service Broker são abertas entre uma instância do SQL Server e o serviço de destino especificado. Normalmente, as conversações permanecem abertas enquanto a notificação de eventos existir como objeto na instância do servidor. Em alguns casos de erro, as conversações podem ser fechadas antes de a notificação de eventos ser descartada. Essas conversações nunca são compartilhadas entre notificações de eventos. Cada notificação de eventos tem suas próprias conversações exclusivas. Terminar uma conversação explicitamente impede que o serviço de destino receba mais mensagens, sendo que a conversação não será reaberta na próxima vez em que a notificação de eventos for acionada.

As informações dos eventos são entregues ao Service Broker na forma de uma variável de tipo xml que fornece, dentre outras coisas, informações sobre o momento da ocorrência de um evento, o objeto de banco de dados afetado e a instrução do lote Transact-SQL envolvida. Para obter mais informações sobre o esquema XML produzido por notificações de eventos, consulte EVENTDATA (Transact-SQL).

Dados de eventos podem ser usados por aplicativos que se encontram em execução junto com o SQL Server para rastrear o andamento e tomar decisões. Por exemplo, a notificação de eventos a seguir envia um aviso a certo serviço toda vez que uma instrução ALTER TABLE é emitida no banco de dados de exemplo AdventureWorks.

USE AdventureWorks
GO
CREATE EVENT NOTIFICATION NotifyALTER_T1
ON DATABASE
FOR ALTER_TABLE
TO SERVICE '//Adventure-Works.com/ArchiveService' ,
    '8140a771-3c4b-4479-8ac0-81008ab17984';

Um script de exemplo de notificações de eventos, EventNotificationSample.sql, que pode ser executado em relação ao banco de dados de exemplo AdventureWorks, é fornecido em Exemplos do Mecanismo de Banco de Dados do SQL Server. Para obter mais informações, consulte Event Notifications Sample.