Share via


Esecuzione di SqlCommand con SqlNotificationRequest

Scarica ADO.NET

È possibile configurare un elemento SqlCommand per generare una notifica se i dati cambiano dopo essere stati recuperati dal server e il set di risultati è diverso se la query viene eseguita di nuovo. Questa operazione è utile per gli scenari in cui si usano code di notifica personalizzate sul server o non si vogliono gestire oggetti attivi.

Creazione della richiesta di notifica

Per creare la richiesta di notifica, è possibile usare un oggetto SqlNotificationRequest associandolo a un oggetto SqlCommand. Dopo la creazione della richiesta, l'oggetto SqlNotificationRequest non è più necessario. È possibile eseguire una query sulla coda per verificare la presenza di notifiche 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, le eventuali modifiche apportate al set di risultati originale attivano l'invio di un messaggio alla coda di SQL Server configurata nella richiesta di notifica.

Il polling della coda di SQL Server e l'interpretazione del messaggio sono specifici dell'applicazione. L'applicazione è responsabile del polling della coda e della reazione in base al contenuto del messaggio.

Nota

Quando si usano le richieste di notifica di SQL Server con SqlDependency, creare il proprio nome di coda invece di usare il nome del servizio predefinito.

Non esistono nuovi elementi di sicurezza sul lato client per SqlNotificationRequest. Questa è principalmente una funzionalità server e il server ha creato privilegi speciali che gli utenti devono avere per richiedere una notifica.

Esempio

Il frammento di codice seguente illustra come creare un elemento SqlNotificationRequest e associarlo a un elemento 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.

Passaggi successivi