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


Сравнительное изучение уведомлений о событиях и триггеров

В следующей таблице сравниваются триггеры и уведомления о событиях и выявляются различия между ними.

ТРИГГЕРЫ

УВЕДОМЛЕНИЯ О СОБЫТИЯХ

Триггеры DML срабатывают в ответ на события языка DML. Триггеры DDL срабатывают в ответ на события языка DDL.

Уведомления о событиях срабатывают в ответ на события языка DDL и подмножество событий трассировки SQL.

Триггеры могут выполнять управляемый код Transact-SQL или CLR.

Уведомления о событиях не могут выполнять код. Вместо этого они отправляют сообщения xml службе Service Broker.

Триггеры обрабатываются синхронно в области действия транзакций, вызвавших их срабатывание.

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

Потребитель триггера тесным образом связан с событием, вызвавшим срабатывание триггера.

Потребитель уведомления о событии не связан с событием, вызвавшим срабатывание триггера.

Триггеры должны обрабатываться на локальном сервере.

Уведомления о событиях могут обрабатываться на удаленном сервере.

Для триггеров можно выполнить откат.

Откат уведомлений о событиях невозможен.

Имена триггеров DML находятся в области видимости схемы. Имена триггеров DDL находятся в области видимости базы данных или сервера.

Имена уведомлений о событиях находятся в области видимости сервера или базы данных. Уведомления о событии QUEUE_ACTIVATION находятся в области видимости определенной очереди.

Триггеры DML принадлежат тому же владельцу, что и таблицы, к которым они применяются.

Уведомление о событии для очереди может принадлежать владельцу, отличному от владельца объекта, к которому оно применяется.

Триггеры поддерживают предложение EXECUTE AS.

Уведомления о событиях не поддерживают предложение EXECUTE AS.

Сведения о событии триггера DDL могут быть захвачены с использованием функции EVENTDATA, которая возвращает тип данных xml.

Уведомления о событиях направляют данные о событии в формате XML службе Service Broker. Данные форматируются по той же схеме, что и функция EVENTDATA.

Метаданные о триггерах отображаются в представлениях каталога sys.triggers и sys.server_triggers.

Метаданные об уведомлениях о событиях отображаются в представлениях каталога sys.event_notifications и sys.server_event_notifications.

См. также

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