Уведомления запросов в 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 в приложении ASP.NET
Демонстрирует использование уведомлений запросов из приложения ASP.NET.
Обнаружение изменений с использованием SqlDependency
Сведения об определении отличия результатов запроса от изначально полученных.
Выполнение SqlCommand с помощью SqlNotificationRequest
Демонстрирует настройку объекта SqlCommand для работы с уведомлением запроса.
Справочные материалы
SqlNotificationRequest
Описание класса SqlNotificationRequest и всех его членов.
SqlDependency
Описание класса SqlDependency и всех его членов.
SqlCacheDependency
Описание класса SqlCacheDependency и всех его членов.