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


Реализация уведомлений о событиях

Изменения: 5 декабря 2005 г.

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

ms178080.note(ru-ru,SQL.90).gifВажно!
Для уведомлений о событиях, отправляющих сообщения компоненту Service Broker на удаленном сервере, необходимо настроить безопасность диалога ядра СУБД. Безопасность диалога должна быть настроена вручную согласно модели полной безопасности. Дополнительные сведения см. в разделе Безопасность диалога для уведомлений о событиях.

Создание целевой службы

Не нужно создавать службу, инициирующую компонент Service Broker, так как он включает в себя следующий специальный тип сообщения и контракт для уведомлений о событиях:

https://schemas.microsoft.com/SQL/Notifications/PostEventNotification

Целевая служба, принимающая уведомления о событии, должна поддерживать такой уже существующий контракт.

Создание целевой службы:

  1. Создайте очередь для получения сообщений.
    ms178080.note(ru-ru,SQL.90).gifПримечание.
    Очередь получает сообщения следующего типа: https://schemas.microsoft.com/SQL/Notifications/QueryNotification. https://schemas.microsoft.com/SQL/Notifications/QueryNotification.
  2. Создайте службу для очереди, ссылающуюся на контракт уведомлений о событии.
  3. Создайте маршрут для службы, чтобы определить адрес, на который компонент Service Broker будет отправлять сообщения этой службе. Если уведомление о событии отправляется службе в той же базе данных, укажите ADDRESS = 'LOCAL'.
    ms178080.note(ru-ru,SQL.90).gifПримечание.
    Маршрут компонента Service Brokerопределяет службу, получающую уведомления. Если уведомление о событии направляется службе на удаленном сервере, маршруты необходимо определить и на исходном, и на целевом сервере, чтобы обеспечить двухстороннюю связь. Дополнительные сведения см. в разделе Маршрутизация компонента Service Broker.

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

CREATE QUEUE NotifyQueue ;
GO
CREATE SERVICE NotifyService
ON QUEUE NotifyQueue
(
[https://schemas.microsoft.com/SQL/Notifications/PostEventNotification]
);
GO
CREATE ROUTE NotifyRoute
WITH SERVICE_NAME = 'NotifyService',
ADDRESS = 'LOCAL';
GO

Дополнительные сведения о том, как создавать целевые службы компонента Service Broker, см. в разделе CREATE SYNONYM (Transact-SQL).

Создание уведомления о событии

Уведомления о событиях создаются при помощи инструкции языка Transact-SQL CREATE EVENT NOTIFICATION и удаляются при помощи инструкции DROP EVENT NOTIFICATION. Чтобы изменить уведомление о событии, его нужно удалить, а затем создать заново.

В следующем примере создается уведомление о событии CreateDatabaseNotification. Это уведомление отправляет предварительно созданной службе NotifyService сообщения обо всех событиях CREATE_DATABASE, происходящих на сервере.

CREATE EVENT NOTIFICATION CreateDatabaseNotification
ON SERVER
FOR CREATE_DATABASE
TO SERVICE 'NotifyService', '8140a771-3c4b-4479-8ac0-81008ab17984' ;
ms178080.Caution(ru-ru,SQL.90).gifВнимание!
Уведомления о событиях считают события CREATE_SCHEMA и определения <schema_element> в инструкциях CREATE SCHEMA различными событиями. Например, пусть создано уведомление о событиях CREATE_SCHEMA и CREATE_TABLE и выполняется следующий пакет. CREATE SCHEMA s CREATE TABLE t1 (col1 int) В этом случае уведомление о событиях направляется дважды: в первый раз при возникновении события CREATE_SCHEMA, а во второй — при возникновении события CREATE_TABLE. Рекомендуется либо избегать создания уведомлений о событиях одновременно для событий CREATE_SCHEMA и текстов <schema_element> в любых соответствующих определениях CREATE SCHEMA, либо встраивать в приложение логику, позволяющую избежать регистрации ненужных данных о событиях.

Создание уведомления о событии

Удаление уведомления о событии

См. также

Основные понятия

Основные сведения уведомлений о событиях
Проектирование уведомлений о событиях
Получение сведений об уведомлениях о событиях

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

EVENTDATA (Transact-SQL)

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

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

Журнал изменений

Версия Журнал

5 декабря 2005 г.

Новое содержимое:
  • добавлено примечание о том, что уведомления о событиях, создаваемые одновременно для событий CREATE_SCHEMA и определений <schema_element> в инструкциях CREATE SCHEMA, могут непреднамеренно срабатывать дважды.
Измененное содержимое:
  • изменен раздел о безопасности диалогов для уведомлений о событиях. Добавлено важное примечание, отсылающее пользователя к другому разделу.