이벤트 알림 및 트리거 이해
다음 표에서는 트리거와 이벤트 알림을 비교 및 대조합니다.
TRIGGERS | EVENT NOTIFICATIONS |
---|---|
DML 트리거는 DML(데이터 조작 언어) 이벤트에 응답하고 DDL 트리거는 DDL(데이터 정의 언어) 이벤트에 응답합니다. |
이벤트 알림은 DDL 이벤트와 SQL Trace 이벤트의 하위 집합에 응답합니다. |
트리거는 Transact-SQL 또는 CLR(공용 언어 런타임) 관리 코드를 실행할 수 있습니다. |
이벤트 알림은 코드를 실행하지 않는 대신 Service Broker 서비스에 xml 메시지를 보냅니다. |
트리거는 트리거를 시작하는 트랜잭션 범위 내에서 동기적으로 처리됩니다. |
이벤트 알림은 비동기적으로 처리될 수 있으며 해당 이벤트 알림을 시작하는 트랜잭션 범위 내에서 실행되지 않습니다. |
트리거의 소비자는 트리거를 실행하는 이벤트에 밀접하게 결합됩니다. |
이벤트 알림의 소비자는 이벤트 알림을 시작하는 이벤트와 분리됩니다. |
트리거는 로컬 서버에서 처리해야 합니다. |
이벤트 알림은 원격 서버에서 처리할 수 있습니다. |
트리거는 롤백할 수 있습니다. |
이벤트 알림은 롤백할 수 없습니다. |
DML 트리거 이름은 스키마 범위입니다. DDL 트리거 이름은 데이터베이스 범위이거나 서버 범위입니다. |
이벤트 알림 이름은 서버 또는 데이터베이스 범위입니다. QUEUE_ACTIVATION 이벤트에 대한 이벤트 알림의 범위는 특정 큐로 한정됩니다. |
DML 트리거는 트리거가 적용되는 테이블과 동일한 소유자에 의해 소유됩니다. |
큐에 대한 이벤트 알림의 소유자는 해당 이벤트 알림이 적용되는 개체의 소유자와 다를 수 있습니다. |
트리거는 EXECUTE AS 절을 지원합니다. |
이벤트 알림은 EXECUTE AS 절을 지원하지 않습니다. |
DDL 트리거 이벤트 정보는 xml 데이터 형식을 반환하는 EVENTDATA 함수를 사용하여 캡처할 수 있습니다. |
이벤트 알림은 Service Broker 서비스에 xml 이벤트 정보를 보냅니다. 해당 정보는 EVENTDATA 함수와 같은 스키마 형식으로 지정됩니다. |
트리거의 메타데이터는 sys.triggers 및 sys.server_triggers 카탈로그 뷰에 포함됩니다. |
이벤트 알림의 메타데이터는 sys.event_notifications 및 sys.server_event_notifications 카탈로그 뷰에 포함됩니다. |