Уведомления запросов в SQL Server
С помощью уведомлений о запросах, построенных на основе инфраструктуры компонента Service Broker, приложения могут получать извещения об изменениях данных. Эта функция особенно полезна для приложений, которые предоставляют кэш данных из базы данных (например, для веб-приложений), и которым требуются уведомления об изменении исходных данных.
Существует три способа реализации уведомлений о запросах с помощью ADO.NET:
Реализация низкого уровня обеспечивается классом
SqlNotificationRequest
, который предоставляет функциональные возможности на стороне сервера, что позволяет выполнять команду с запросом на уведомления.Высокоуровневая реализация обеспечивается классом
SqlDependency
, который является классом, предоставляющим высокоуровневую абстракцию функций уведомления между исходным приложением и SQL Server, что позволяет использовать зависимость для обнаружения изменений на сервере. В большинстве случаев это самый простой и самый эффективный способ задействовать возможности уведомления SQL Server в управляемых клиентских приложениях с помощью поставщика данных .NET Framework для SQL Server.Кроме того, веб-приложения, построенные с помощью ASP.NET 2.0 и более поздних версий, могут использовать вспомогательные классы
SqlCacheDependency
.
Уведомления о запросах удобно использовать в приложениях, которые должны обновлять дисплеи и кэши в ответ на изменения в базовых данных. Microsoft SQL Server позволяет приложениям .NET Framework передавать команды в SQL Server и запрашивать уведомления, если при выполнении одной и той же команды может получиться результирующий набор, отличный от полученного первоначально. Формируемые на сервере уведомления отправляются через очереди для последующей обработки.
Уведомления можно настроить для инструкций SELECT и EXECUTE. При использовании инструкции EXECUTE SQL Server регистрирует уведомление о выполненной команде, а не саму инструкцию EXECUTE. Команда должна соответствовать требованиям, предъявляемым к инструкции SELECT. Если регистрируемая команда состоит из нескольких инструкций, ядро СУБД создает уведомления для каждой из них.
Если вы разрабатываете приложение, в котором требуются надежные вложенные уведомления при изменении данных, ознакомьтесь с разделами "Планирование эффективной стратегии уведомлений запросов" и "Альтернативные варианты уведомлений" в статье "Планирование уведомлений". Дополнительные сведения о уведомлениях запросов и sql Server Service Broker см. в следующих статьях в документации по SQL Server.
Документация SQL Server
В этом разделе
Включение уведомлений о запросах описывает использование уведомлений запросов, включая требования к включению и использованию.
Обнаружение изменений с помощью SqlDependency демонстрирует, как определить, когда результаты запроса будут отличаться от полученных первоначально.
SqlCommand Execution с sqlNotificationRequest Демонстрирует настройку SqlCommand объекта для работы с уведомлением запроса.
Справочные материалы
SqlNotificationRequest Описывает SqlNotificationRequest класс и все его члены.
SqlDependency Описывает SqlDependency класс и все его члены.
SqlCacheDependency Описывает SqlCacheDependency класс и все его члены.