Проектирование уведомлений о событиях
Изменения: 14 апреля 2006 г.
Для проектирования уведомления о событии необходимо определить следующее:
- область уведомления;
- инструкцию Transact-SQL или группу инструкций, формирующих уведомление о событии.
Указание области уведомления
Можно задать уведомление о событии в ответ на выполнение инструкции для всех объектов текущей базы данных или всех объектов экземпляра SQL Server. Уведомления о событиях, заданные на событиях QUEUE_ACTIVATION и BROKER_QUEUE_DISABLED, относятся к области отдельных очередей. Не все события могут возникнуть в любой области. События CREATE_DATABASE, например, могут возникнуть только на уровне экземпляра сервера. С другой стороны, возникновение уведомления о событии, созданного на событии ALTER_TABLE, может быть запрограммировано на всех таблицах базы данных или на всех таблицах экземпляра сервера.
В следующем примере уведомление о выполнении инструкции ALTER TABLE
на экземпляре сервера отправляется экземпляру компонента Service Broker в текущей базе данных.
CREATE EVENT NOTIFICATION log_ddl1
ON SERVER
FOR ALTER_TABLE
TO SERVICE '//Adventure-Works.com/ArchiveService' , 'current database';
Ссылки на инструкции языка Transact-SQL и области, которые могут быть заданы для них, приводятся далее в разделе «Выбор определенной DDL-инструкции для формирования уведомления о событии».
Уведомления о событиях не формируются в ответ на события, которые влияют на локальные или глобальные временные таблицы и хранимые процедуры.
Указание инструкции или группы инструкций языка Transact-SQL
Уведомления о событиях могут создаваться таким образом, чтобы они формировались в ответ на следующие действия:
- запуск определенной DDL-инструкции, события трассировки SQL или события компонента Service Broker;
- запуск предварительно определенной группы DDL-инструкций или событий трассировки SQL.
Выбор определенной DDL-инструкции для формирования уведомления о событии
Уведомления о событиях могут быть спроектированы таким образом, что они будут формироваться после запуска определенной инструкции языка Transact-SQL или хранимой процедуры. Как показано в предыдущем примере, это уведомление о событии формируется после события ALTER_TABLE
.
Список отдельных инструкций языка Transact-SQL, для которых может быть задано формирование уведомления о событии, а также область, на которой уведомления могут выполняться, приводятся в разделе Инструкции DDL для использования с уведомлениями о событиях. Эти события можно также получить по запросу представления каталога sys.event_notification_event_types.
Примечание. |
---|
Определенные системные хранимые процедуры, выполняющие DDL-подобные операции, могут также вызывать формирование уведомления о событиях. Протестируйте свои уведомления о событиях, чтобы определить их реакцию на выполнение системных хранимых процедур. Например, как инструкция CREATE TYPE, так и хранимая процедура sp_addtype формируют уведомление, созданное на событии CREATE_TYPE. Однако хранимая процедура sp_rename не вызывает формирования никаких уведомлений о событиях. |
Выбор определенного события трассировки SQL для формирования уведомления о событии
Уведомления о событиях могут быть спроектированы таким образом, что они будут срабатывать после возникновения события трассировки SQL. Например, следующее уведомление о событии формируется после возникновения на сервере события Object_Created
.
CREATE EVENT NOTIFICATION log_ddl1
ON SERVER
FOR Object_Created
TO SERVICE '//Adventure-Works.com/ArchiveService', 'current database' ;
Список событий трассировки SQL, которые могут вызывать формирование уведомления о событии, приводится в разделе События трассировки для использования с уведомлениями о событиях. Список этих событий можно также получить по запросу к представлению каталога sys.event_notification_event_types. События трассировки SQL могут выполняться только в области экземпляра сервера. Дополнительные сведения о классах событий трассировки SQL см. в разделе Справочник по приложению SQL Server Profiler.
Выбор определенного события компонента Service Broker для формирования уведомления о событии
Уведомления о событии могут быть спроектированы таким образом, чтобы они формировались после событий компонента Service Broker QUEUE_ACTIVATION или BROKER_QUEUE_DISABLED. Событие QUEUE_ACTIVATION возникает, когда в очереди имеются сообщения для обработки. Дополнительные сведения см. в разделе Event-Based Activation. Событие BROKER_QUEUE_DISABLED возникает при установке состояния очереди в значение OFF. Дополнительные сведения см. в разделе Handling Poison Messages.
Выбор стандартной группы DLL-инструкций для формирования уведомления о событии
Уведомление о событии может формироваться после выполнения какого-либо события Transact-SQL, принадлежащего к стандартной группе схожих событий. Например, если необходимо, чтобы уведомление о событии формировалось после выполнения какой-либо из инструкций CREATE TABLE, ALTER TABLE или DROP TABLE, то в инструкции CREATE EVENT NOTIFICATON можно указать FOR DDL_TABLE_EVENTS. После выполнения инструкции CREATE EVENT NOTIFICATION события, входящие в группу событий, добавляются в представление каталога sys.events.
Для списка стандартных групп инструкций DDL и DML, которые доступны для уведомлений о событиях, конкретные входящие в эти группы инструкции и области, где эти группы событий могут выполняться, приводятся в разделе Группы событий DDL, используемые для уведомлений о событиях.
Выбор стандартной группы событий трассировки SQL для формирования уведомления о событии
Уведомление о событии может формироваться после возникновения какого-либо события трассировки SQL, принадлежащего к стандартной группе схожих событий трассировки. Например, если необходимо, чтобы уведомление о событии формировалось после любого из событий трассировки, связанного с блокировкой, включая события LOCK_DEADLOCK, LOCK_DEADLOCK_CHAIN, LOCK_ESCALATION и DEADLOCK_GRAPH, то в инструкции CREATE EVENT NOTIFICATION можно задать FOR TRC_LOCKS.
Список стандартных групп событий трассировки SQL, вызывающих уведомление о событии, см. в разделе Группы событий трассировки, используемые с уведомлениями о событиях. Эти группы могут выполняться только на уровне экземпляра сервера.
См. также
Основные понятия
Основные сведения уведомлений о событиях
Реализация уведомлений о событиях
Другие ресурсы
Справка и поддержка
Получение помощи по SQL Server 2005
Журнал изменений
Версия | Журнал |
---|---|
14 апреля 2006 г. |
|
5 декабря 2005 г. |
|