Langue
Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Pour recevoir une notification lorsque les résultats de la requête changent, configurez SqlCommand avec une demande de notification. Utilisez les demandes de notification pour les files d’attente de serveur personnalisées ou lorsque vous ne souhaitez pas gérer les objets de dépendance en direct.
Création de la demande de notification
Créez l’objet SqlNotificationRequest et affectez-le à la propriété Notification de la commande avant l’exécution. Une fois que le serveur enregistre la requête, vous n’avez pas besoin de conserver l’objet de requête. Interrogez la file d’attente pour les notifications et répondez en fonction des besoins de votre application. Les notifications peuvent arriver lorsque l’application est arrêtée et rester disponibles après son redémarrage.
Quand la commande avec la notification associée est exécutée, toute modification du jeu de résultats déclenche l’envoi d’un message à la file d’attente SQL Server qui a été configurée dans la demande de notification.
La manière dont vous interrogez la file d’attente SQL Server et interprétez le message est propre à votre application. L'application est chargée de surveiller la file d'attente et de réagir en fonction du contenu du message.
Remarque
Lors de l’utilisation des requêtes de notification SQL Server avec SqlDependency, créez votre propre nom de file d’attente au lieu d’utiliser le nom de service par défaut.
Accordez aux utilisateurs les autorisations de serveur requises pour demander des notifications. La classe SqlNotificationRequest n’impose pas d’exigences de sécurité côté client.
Exemple :
Le fragment suivant crée l’objet SqlNotificationRequest et l’associe au SqlCommand. Installez le package NuGet Microsoft.Data.SqlClient et importez Microsoft.Data.Sql et Microsoft.Data.SqlClient. La Options valeur nomme un service Service Broker et la base de données qui l’héberge, et non la file d’attente elle-même. Créez le service et la file d’attente comme décrit dans Activation des notifications de requête.
' 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.