Использование уведомлений запросов

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

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

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

Database Engine использует подписки на уведомления, чтобы отслеживать требования об уведомлениях запроса. Если команда содержит требование об уведомлении, база данных регистрирует требование как подписку на уведомление и затем выполняет команду.

Database Engine использует компонент Service Broker для доставки сообщений с уведомлениями. Следовательно, компонент Service Broker должен быть активен в базе данных, где приложение требует подписку. Функциональная возможность уведомления запроса не требует и не использует службы Notification Services. Уведомления запросов не зависят от уведомлений о событиях.

Чтобы получить сообщение с уведомлением из другой базы данных, не содержащей подписку, в базе данных, содержащей подписку, параметр TRUSTWORTHY должен быть установлен в ON. Дополнительные сведения см. в разделе ALTER DATABASE (Transact-SQL).

См. также

Другие ресурсы

Знакомство с компонентом Service Broker
Архитектура компонента Service Broker
Уведомления о событиях (компонент Database Engine)
Working with Query Notifications

Справка и поддержка

Получение помощи по SQL Server 2005