Idioma
Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Para receber uma notificação quando os resultados da consulta forem alterados, configure o SqlCommand com uma solicitação de notificação. Use solicitações de notificação para filas de servidor personalizadas ou quando não quiser manter objetos de dependência ativos.
Criando a solicitação de notificação
Crie o objeto SqlNotificationRequest e atribua-o à propriedade Notification do comando antes da execução. Depois que o servidor registrar a solicitação, você não precisará reter o objeto de solicitação. Consulte a fila em busca de notificações e responda conforme o aplicativo requer. As notificações podem chegar enquanto o aplicativo estiver desligado e permanecer disponíveis após a reinicialização.
Quando o comando é executado com a notificação associada, qualquer alteração no conjunto de resultados original dispara o envio de uma mensagem para a fila do SQL Server configurada na solicitação de notificação.
A forma de sondar a fila do SQL Server e interpretar a mensagem é específica para seu aplicativo. O aplicativo é responsável pela sondagem da fila e por reagir com base no conteúdo da mensagem.
Observação
Ao usar as solicitações de notificação do SQL Server com SqlDependency, crie um nome de fila próprio em vez de usar o nome de serviço padrão.
Conceda aos usuários as permissões de servidor necessárias para solicitar notificações. A SqlNotificationRequest classe não adiciona requisitos de segurança do lado do cliente.
Exemplo
O fragmento a seguir cria o SqlNotificationRequest objeto e o associa ao SqlCommand. Instale o pacote NuGet Microsoft.Data.SqlClient e importe Microsoft.Data.SqlClient e Microsoft.Data.Sql. O Options valor nomeia um serviço do Service Broker e o banco de dados que o hospeda, não a fila em si. Crie o serviço e a fila, conforme descrito na habilitação de 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.