Idioma
Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Para receber uma notificação quando os resultados da consulta mudarem, configure o SqlCommand com um pedido de notificação. Usa solicitações de notificação para filas de servidor personalizadas ou quando não quiseres manter objetos de dependência ao vivo.
Criando a solicitação de notificação
Cria o SqlNotificationRequest objeto e atribui-o à propriedade do Notification comando antes da execução. Depois de o servidor registar o pedido, não precisa de reter o objeto do pedido. Consulte a fila para notificações e responda conforme a sua aplicação exigir. As notificações podem chegar enquanto a aplicação está encerrada e permanecer disponíveis após o reinicio.
Quando o comando com a notificação associada é executado, quaisquer alterações no conjunto de resultados original disparam o envio de uma mensagem para a fila do SQL Server que foi configurada na solicitação de notificação.
A forma como você pesquisa a fila do SQL Server e interpreta a mensagem é específica para seu aplicativo. O aplicativo é responsável por sondar a fila e reagir com base no conteúdo da mensagem.
Observação
Ao usar solicitações de notificação do SQL Server com SqlDependency, crie o seu próprio nome de fila em vez de usar o nome de serviço padrão.
Conceda aos utilizadores as permissões do servidor necessárias para solicitar notificações. A SqlNotificationRequest classe não adiciona requisitos de segurança do lado do cliente.
Exemplo
O fragmento seguinte cria o SqlNotificationRequest objeto e associa-o ao SqlCommand. Instale o pacote NuGet Microsoft.Data.SqlClient e importe Microsoft.Data.Sql e Microsoft.Data.SqlClient. O Options valor nomeia um serviço Service Broker e a base de dados que o hospeda, não a fila em si. Crie o serviço e a fila conforme descrito em Ativar Notificações de Consulta.
' Assume connection is an open SqlConnection.
' Create a new SqlCommand object.
Dim command As New SqlCommand( _
"SELECT ShipperID, CompanyName, Phone FROM dbo.Shippers", connection)
' Create a SqlNotificationRequest object.
Dim notificationRequest As New SqlNotificationRequest()
notificationRequest.UserData = "NotificationID"
notificationRequest.Options = "service=ContactChangeNotifications;local database=AdventureWorks"
' Associate the notification request with the command.
command.Notification = notificationRequest
' Execute the command.
command.ExecuteReader()
' Process the DataReader.
' You can use Transact-SQL syntax to periodically poll the
' SQL Server queue to see if you have a new message.
// Assume connection is an open SqlConnection.
// Create a new SqlCommand object.
SqlCommand command=new SqlCommand(
"SELECT ShipperID, CompanyName, Phone FROM dbo.Shippers", connection);
// Create a SqlNotificationRequest object.
SqlNotificationRequest notificationRequest=new SqlNotificationRequest();
notificationRequest.UserData = "NotificationID";
notificationRequest.Options = "service=ContactChangeNotifications;local database=AdventureWorks";
// Associate the notification request with the command.
command.Notification=notificationRequest;
// Execute the command.
command.ExecuteReader();
// Process the DataReader.
// You can use Transact-SQL syntax to periodically poll the
// SQL Server queue to see if you have a new message.