Notificações de consulta no SQL Server

Com base na infraestrutura do Service Broker, as notificações de consulta permitem que os aplicativos sejam notificados em caso de alteração nos dados. Esse recurso é particularmente útil para aplicativos que fornecem um cache de informações de um banco de dados, como um aplicativo da Web, e precisam ser notificados quando os dados de origem são alterados.

Há três maneiras pelas quais você pode implementar notificações de consulta usando o ADO.NET:

  1. A implementação de nível baixo é fornecida pela classe SqlNotificationRequest, que expõe a funcionalidade do lado do servidor, permitindo que você execute um comando com uma solicitação de notificação.

  2. A implementação de alto nível é fornecida pela classe SqlDependency, que é uma classe que fornece uma abstração de alto nível da funcionalidade de notificação entre o aplicativo de origem e o SQL Server, permitindo que você use uma dependência para detectar alterações no servidor. Na maioria dos casos, esse é o modo mais simples e mais eficiente de aproveitar o recurso de notificações do SQL Server por aplicativos cliente gerenciados usando o provedor de dados .NET Framework para SQL Server.

  3. Além disso, os aplicativos Web criados usando o ASP.NET 2.0 ou posterior podem usar as classes auxiliares SqlCacheDependency.

As notificações de consulta são usadas para aplicativos que precisam atualizar exibições ou caches em resposta a alterações nos dados subjacentes. O Microsoft SQL Server permite que aplicativos do .NET Framework enviem um comando ao SQL Server e solicitem a notificação se executar o mesmo comando produzir conjuntos de resultados diferentes dos recuperados inicialmente. As notificações geradas no servidor são enviadas pelas filas para serem processadas posteriormente.

Você pode configurar notificações para as instruções SELECT e EXECUTE. Ao usar uma instrução EXECUTE, o SQL Server registra uma notificação para o comando executado e não a própria instrução EXECUTE. O comando deve atender os requisitos e as limitações de uma instrução SELECT. Quando um comando que registra uma notificação contiver mais de uma instrução, o Mecanismo de Banco de Dados criará uma notificação para cada instrução no lote.

Se você estiver desenvolvendo um aplicativo em que precise receber notificações confiáveis imediatamente quando os dados forem alterados, examine as seções Planejando uma estratégia eficiente das notificações de consulta e Alternativas para notificações de consulta no artigo Planejando para notificações. Para obter mais informações sobre as notificações de consulta e o SQL Server Service Broker, consulte os seguintes links para artigos na documentação do SQL Server.

Documentação do SQL Server

Nesta seção

Habilitando notificações de consulta
Discute como usar notificações de consulta, incluindo os requisitos para habilitá-las e usá-las.

SqlDependency em um aplicativo ASP.NET
Demonstra como usar notificações de consulta em um aplicativo ASP.NET.

Detectando alterações com SqlDependency
Demonstra como detectar quando os resultados da consulta serão diferentes daqueles recebidos originalmente.

Execução de SqlCommand com um SqlNotificationRequest
Demonstra como configurar um objeto SqlCommand para trabalhar com uma notificação de consulta.

Referência

SqlNotificationRequest
Descreve a classe SqlNotificationRequest e todos os membros dela.

SqlDependency
Descreve a classe SqlDependency e todos os membros dela.

SqlCacheDependency
Descreve a classe SqlCacheDependency e todos os membros dela.

Confira também