Основные сведения уведомлений о событиях

Уведомления о событиях выполняются в ответ на множество инструкций языка описания данных (DDL) Transact-SQL и на события приложения SQL Trace; уведомления отправляют сведения об этих событиях службе компонента Service Broker.

Уведомления о событиях можно использовать следующим образом.

  • Регистрировать и просматривать изменения или активность базы данных.

  • Выполнять действия в ответ на события в асинхронном режиме, а не синхронном.

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

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

В отличие от трассировок SQL Trace, уведомления о событиях могут использоваться для выполнения действий в ответ на события SQL Trace внутри экземпляра SQL Server. Дополнительные сведения см. в разделе Сравнение уведомлений о событиях и трассировки SQL.

При создании уведомления о событии открывается один или несколько диалогов компонента Service Broker между экземпляром SQL Server и указанной целевой службой. Эти диалоги обычно остаются открытыми, пока уведомление о событии существует в виде объекта на экземпляре сервера. В некоторых случаях ввиду ошибок диалоги могут закрываться до удаления уведомления о событии. Эти диалоги никогда не разделяются между уведомлениями о событиях. Каждое уведомление владеет собственными диалогами. Явное завершение диалога не дает конечной службе далее получать сообщения, и при следующем появлении события диалог повторно открываться не будет.

Сведения о событиях доставляются в компонент Service Broker в виде переменной типа xml, содержащей сведения о том, когда произошло событие, о затронутом объекте базы данных, об использованном пакете инструкций Transact-SQL и т. д. Дополнительные сведения о схеме XML, создаваемой уведомлениями о событиях, см. в разделе EVENTDATA (Transact-SQL).

Данные события могут использоваться приложениями, запускаемыми вместе с SQL Server для отслеживания изменений и принятия решений. Например, следующее уведомление о событии отправляет сообщение определенной службе каждый раз, когда инструкция ALTER TABLE выполняется в образце базы данных База данных AdventureWorks2008R2.

USE AdventureWorks2008R2;
GO
CREATE EVENT NOTIFICATION NotifyALTER_T1
ON DATABASE
FOR ALTER_TABLE
TO SERVICE '//Adventure-Works.com/ArchiveService' ,
    '8140a771-3c4b-4479-8ac0-81008ab17984';

Образец сценария уведомления о событии, который может быть запущен для образца базы данных База данных AdventureWorks2008R2, EventNotificationSample.sql, поставляется вместе с примерами Образцы компонента SQL Server Database Engine.