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:
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.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.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.
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 a configuração de um objeto SqlCommand para funcionar 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.