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

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

Microsoft.Data.SqlClient предоставляет два класса для уведомлений о запросах:

  • Используется SqlNotificationRequest для выполнения команды с запросом на уведомление и обработки сообщений Service Broker самостоятельно.

  • Используется SqlDependency для обнаружения изменений через OnChange событие. Microsoft. Data.SqlClient управляет прослушивателем и предоставляет сведения о уведомлениях в аргументах события.

Important

Не используйте System.Data.SqlClient для новой разработки. Используйте Microsoft.Data.SqlClient вместо этого. Класс ASP.NET Framework SqlCacheDependency требует System.Data.SqlClient и не интегрируется с Microsoft.Data.SqlClient. Для новых приложений Microsoft.Data.SqlClient подпишитесь на SqlDependency.OnChange и инвалидируйте записи через API кэша вашего приложения.

Уведомления о запросах удобно использовать в приложениях, которые должны обновлять дисплеи и кэши в ответ на изменения в базовых данных. SQL Server позволяет приложениям .NET отправлять команду и запрашивать уведомление, если выполнение той же команды приведет к получению других результирующих наборов, отличных от полученных изначально. Формируемые на сервере уведомления отправляются через очереди для последующей обработки.

Вы можете настроить уведомления для SELECT и EXECUTE выписок. При использовании инструкции EXECUTE SQL Server регистрирует уведомление для выполняемой команды, а не самого EXECUTE оператора. Команда должна соответствовать требованиям и ограничениям для оператора SELECT. Когда команда, которая регистрирует уведомление, содержит более одной инструкции, ядро СУБД создает уведомление для каждой инструкции в пакете.

Если вы разрабатываете приложение, в котором требуются надежные уведомления с минимальной задержкой при изменении данных, ознакомьтесь с разделами "Планирование эффективной стратегии уведомлений запросов" и "Альтернативы уведомлениям запросов" в статье "Планирование уведомлений". Дополнительные сведения о уведомлениях запросов и sql Server Service Broker см. в следующих статьях в документации по SQL Server.

Документация SQL Server

В этом разделе

Включение уведомлений о запросах описывает использование уведомлений запросов, включая требования к включению и использованию.

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

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

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

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

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

SqlCacheDependencyОписывает класс зависимостей кэша ASP.NET Framework для System.Data.SqlClient. Он не включает зависимости Microsoft.Data.SqlClient.

См. также