Lingua
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.
Per ricevere una notifica quando cambiano i risultati della query, configurare SqlCommand con una richiesta di notifica. Usare le richieste di notifica per le code server personalizzate o quando non si vogliono mantenere oggetti di dipendenza attivi.
Creazione della richiesta di notifica
Creare l'oggetto SqlNotificationRequest e assegnarlo alla proprietà Notification del comando prima dell'esecuzione. Dopo che il server ha registrato la richiesta, non è necessario conservare l'oggetto richiesta. Eseguire una query sulla coda per le notifiche e rispondere in base alle esigenze dell'applicazione. Le notifiche possono arrivare quando l'applicazione è chiusa e rimangono disponibili dopo il riavvio.
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.
Concedere agli utenti le autorizzazioni del server necessarie per richiedere notifiche. La SqlNotificationRequest classe non aggiunge requisiti di sicurezza lato client.
Esempio
Il frammento seguente crea l'oggetto SqlNotificationRequest e lo associa all'oggetto SqlCommand. Installare il pacchetto NuGet Microsoft.Data.SqlClient e importare Microsoft.Data.Sql e Microsoft.Data.SqlClient. Il valore Options indica un servizio Service Broker e il database che lo ospita, non la coda stessa. Creare il servizio e la coda come descritto in Abilitazione delle notifiche delle query.
' 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.