Уведомления запросов в 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 в приложении ASP.NET
Демонстрирует использование уведомлений запросов из приложения ASP.NET.

Обнаружение изменений с использованием SqlDependency
Сведения об определении отличия результатов запроса от изначально полученных.

Выполнение SqlCommand с помощью SqlNotificationRequest
Демонстрирует настройку объекта SqlCommand для работы с уведомлением запроса.

Справочные материалы

SqlNotificationRequest
Описание класса SqlNotificationRequest и всех его членов.

SqlDependency
Описание класса SqlDependency и всех его членов.

SqlCacheDependency
Описание класса SqlCacheDependency и всех его членов.

См. также