Usando notificações de consulta

O SQL Server 2005 introduziu as notificações de consulta, uma nova funcionalidade que permite ao aplicativo solicitar uma notificação do SQL Server quando há alteração nos resultados de uma consulta. As notificações de consulta permitem aos programadores criarem aplicativos que só consultam o banco de dados quando ocorrem alterações em informações recuperadas previamente pelo aplicativo.

Por exemplo, um aplicativo de catálogo on-line pode armazenar em cache os resultados de uma consulta que relaciona itens de venda. O aplicativo apresenta o catálogo com base nos dados armazenados em cache. Quando a lista de itens de venda é alterada, um manipulador de eventos do aplicativo recebe o evento de notificação e descarta os dados armazenados em cache. Da próxima vez em que um cliente solicitar a lista de itens de venda, o aplicativo consultará o banco de dados para obter os dados atuais e renovará a assinatura de notificação.

Os aplicativos podem tirar proveito de notificações de consulta para diminuir as idas e vindas ao banco de dados. Em vez de escrever um código que repita periodicamente a execução de uma consulta, visando a manter os resultados atualizados, os desenvolvedores poderão criar aplicativos que são notificados automaticamente quando os resultados da consulta ficarem desatualizados. Com notificações de consulta, o aplicativo emite um comando que contém uma consulta e uma solicitação de notificação. O aplicativo armazena em cache os resultados da consulta ou o conteúdo dinâmico gerados dos resultados da consulta. Quando o aplicativo recebe a notificação de consulta, o aplicativo limpa o conteúdo armazenado em cache. O aplicativo, em seguida, emite novamente a consulta e a solicitação de notificação quando for necessário atualizar os resultados de consulta.

O Mecanismo de Banco de Dados usa assinaturas de notificação para controlar as solicitações de notificações de consulta. Quando um comando contiver uma solicitação de notificação, o banco de dados registrará a solicitação como assinatura de notificação e depois executará o comando.

O Mecanismo de Banco de Dados usa o Agente de Serviços para entregar mensagens de notificação. Portanto, o Agente de Serviços precisa estar ativo no banco de dados onde o aplicativo solicita assinaturas. A funcionalidade de notificação de consulta não requer nem usa Notification Services. As notificações de consulta são independentes de notificações de eventos.

Para receber uma mensagem de notificação em um banco de dados diferente do que contém a assinatura, o banco de dados que contém a assinatura deve ter a propriedade TRUSTWORTHY definida como ON. Para obter mais informações, consulte ALTER DATABASE (Transact-SQL).