Share via


Execução de SqlCommand com um SqlNotificationRequest

Baixar ADO.NET

Um SqlCommand pode ser configurado para gerar uma notificação quando os dados forem alterados após terem sido obtidos do servidor. Além disso, o conjunto de resultados seria diferente caso a consulta seja executada novamente. Isso é útil para cenários em que você deseja usar filas de notificação personalizadas no servidor ou quando não quiser manter objetos dinâmicos.

Como criar a solicitação de notificação

É possível usar um objeto SqlNotificationRequest para criar a solicitação de notificação associando-o a um objeto SqlCommand. Depois que a solicitação for criada, o objeto SqlNotificationRequest não será mais necessário. É possível consultar a fila para todas as notificações e responder adequadamente. As notificações podem ocorrer mesmo que o aplicativo seja desligado e reiniciado em seguida.

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.

Não há elementos novos de segurança do lado do cliente para SqlNotificationRequest. Esse é basicamente um recurso do servidor. Ele criou privilégios especiais que os usuários devem ter para solicitar uma notificação.

Exemplo

O fragmento de código a seguir demonstra como criar um SqlNotificationRequest e associá-lo a um SqlCommand.

// 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.id="NotificationID";
notificationRequest.Service="mySSBQueue";

// 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.

Próximas etapas