Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un SqlCommand oggetto può essere configurato per generare una notifica quando i dati vengono modificati dopo che sono stati recuperati dal server e il set di risultati sarebbe diverso se la query fosse stata eseguita di nuovo. Ciò è utile per gli scenari in cui si vogliono usare code di notifica personalizzate nel server o quando non si desidera mantenere gli oggetti attivi.
Creazione della richiesta di notifica
È possibile usare un SqlNotificationRequest oggetto per creare la richiesta di notifica associandola a un SqlCommand oggetto . Dopo aver creato la richiesta, l'oggetto SqlNotificationRequest non è più necessario. È possibile interrogare la coda per ottenere qualsiasi notifica e rispondere in modo appropriato. Le notifiche possono verificarsi anche se l'applicazione viene arrestata e successivamente riavviata.
Quando viene eseguito il comando con la notifica associata, tutte le modifiche apportate al trigger del set di risultati originale inviano un messaggio alla coda di SQL Server configurata nella richiesta di notifica.
Il modo in cui si esegue il polling della coda di SQL Server e si interpreta il messaggio è specifico per la vostra applicazione. L'applicazione è incaricata di monitorare la coda e di reagire in base al contenuto del messaggio.
Annotazioni
Quando si usano le richieste di notifica SQL Server con SqlDependency, si consiglia di creare un proprio nome per la coda, anziché usare il nome del servizio predefinito.
Non sono disponibili nuovi elementi di sicurezza lato client per SqlNotificationRequest. Si tratta principalmente di una funzionalità del server e il server ha creato privilegi speciali che gli utenti devono possedere per richiedere una notifica.
Esempio
Il frammento di codice seguente illustra come creare un oggetto SqlNotificationRequest e associarlo a un oggetto SqlCommand.
' 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.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.
// 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.