Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Чтобы получить уведомление при изменении результатов запроса, настройте SqlCommand с запросом на уведомление. Используйте запросы уведомлений для пользовательских очередей сервера или если не хотите поддерживать активные объекты зависимостей.
Создание запроса на уведомление
Создайте объект SqlNotificationRequest и назначьте его свойству Notification команды перед выполнением. После того как сервер зарегистрирует запрос, вам не нужно хранить объект запроса. Проверьте очередь на наличие уведомлений и ответьте по мере необходимости приложения. Уведомления могут поступать, когда приложение закрыто, и оставаться доступными после перезапуска.
При выполнении команды с соответствующим уведомлением все изменения в исходном результирующем наборе отправляют сообщение в очередь SQL Server, настроенную в запросе на уведомление.
Как провести опрос очереди SQL Server и интерпретировать сообщение, относящееся к приложению. Приложение отвечает за опрос очереди и реагирование на содержимое сообщения.
Замечание
При использовании запросов SqlDependencyуведомлений SQL Server создайте собственное имя очереди вместо использования имени службы по умолчанию.
Предоставьте пользователям разрешения сервера, необходимые для запроса уведомлений. Класс SqlNotificationRequest не добавляет требования к безопасности на стороне клиента.
Пример
Следующий фрагмент создает объект SqlNotificationRequest и связывает его с SqlCommand. Установите пакет NuGet Microsoft.Data.SqlClient и импортируйте Microsoft.Data.SqlClient и Microsoft.Data.Sql. Значение Options обозначает службу Service Broker и базу данных, в которой она размещена, а не саму очередь. Создайте службу и очередь, как описано в разделе Включение уведомлений о запросах.
' 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.