Поделиться через


Уведомления запросов в SQL Server

С помощью уведомлений о запросах, построенных на основе инфраструктуры компонента Service Broker, приложения могут получать извещения об изменениях данных. Эта функция особенно полезна для приложений, которые предоставляют кэш данных из базы данных (например, для веб-приложений), и которым требуются уведомления об изменении исходных данных.

Существует три способа реализации уведомлений о запросах с помощью ADO.NET:

  1. Реализация низкого уровня обеспечивается классом SqlNotificationRequest, который предоставляет функциональные возможности на стороне сервера, что позволяет выполнять команду с запросом на уведомления.

  2. Высокоуровневая реализация обеспечивается классом SqlDependency, который является классом, предоставляющим высокоуровневую абстракцию функций уведомления между исходным приложением и SQL Server, что позволяет использовать зависимость для обнаружения изменений на сервере. В большинстве случаев это самый простой и самый эффективный способ задействовать возможности уведомления SQL Server в управляемых клиентских приложениях с помощью поставщика данных .NET Framework для SQL Server.

  3. Кроме того, веб-приложения, построенные с помощью 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 класс и все его члены.

См. также