이벤트 알림 디자인
업데이트: 2006년 4월 14일
이벤트 알림을 디자인하려면 다음 사항을 결정해야 합니다.
- 알림의 범위
- 이벤트 알림을 발생시키는 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 문에 대한 링크 및 Transact-SQL 문에 지정할 수 있는 범위는 뒷부분에 나오는 "이벤트 알림을 발생시킬 특정 DDL 문 선택" 섹션을 참조하십시오.
로컬 또는 전역 임시 테이블 및 저장 프로시저에 영향을 주는 이벤트에 대해서는 이벤트 알림이 발생하지 않습니다.
Transact-SQL 문 또는 문 그룹 지정
다음에 응답하여 발생하도록 이벤트 알림을 만들 수 있습니다.
- 특정 DDL 문, SQL Trace 이벤트 또는 Service Broker 이벤트
- 미리 정의된 DDL 문 그룹 또는 SQL Trace 이벤트 그룹
이벤트 알림을 발생시킬 특정 DDL 문 선택
특정 Transact-SQL 문이나 저장 프로시저가 실행된 후 이벤트 알림이 발생하도록 디자인할 수 있습니다. 앞의 예에서는 ALTER_TABLE
이벤트 후에 해당 이벤트 알림이 발생합니다.
이벤트 알림을 발생시키도록 지정할 수 있는 개별 Transact-SQL 문 목록 및 알림 실행 범위는 이벤트 알림용 DDL 문을 참조하십시오. 이러한 이벤트는 sys.event_notification_event_types 카탈로그 뷰를 쿼리하여 얻을 수도 있습니다.
[!참고] DDL과 같은 작업을 수행하는 특정 시스템 저장 프로시저에서 이벤트 알림이 발생할 수도 있습니다. 이벤트 알림을 테스트하여 실행된 시스템 저장 프로시저에 대한 응답을 확인합니다. 예를 들어 CREATE TYPE 문과 sp_addtype 저장 프로시저는 모두 CREATE_TYPE 이벤트에서 생성되는 이벤트 알림을 발생시킵니다. 그러나 sp_rename 저장 프로시저는 이벤트 알림을 발생시키지 않습니다.
이벤트 알림을 발생시킬 특정 SQL Trace 이벤트 선택
SQL Trace 이벤트가 발생한 후 이벤트 알림이 실행되도록 디자인할 수 있습니다. 예를 들어 다음 이벤트 알림은 서버에서 Object_Created
이벤트 후에 발생합니다.
CREATE EVENT NOTIFICATION log_ddl1
ON SERVER
FOR Object_Created
TO SERVICE '//Adventure-Works.com/ArchiveService', 'current database' ;
이벤트 알림을 발생시킬 수 있는 SQL Trace 이벤트 목록은 이벤트 알림용 추적 이벤트를 참조하십시오. 이러한 이벤트 목록은 sys.event_notification_event_types 카탈로그 뷰를 쿼리하여 얻을 수도 있습니다. SQL Trace 이벤트는 서버 인스턴스 범위에서만 실행될 수 있습니다. SQL Trace 이벤트 클래스에 대한 자세한 내용은 SQL Server 프로파일러 참조를 참조하십시오.
이벤트 알림을 발생시킬 Service Broker 이벤트 선택
이벤트 알림이 QUEUE_ACTIVATION 또는 BROKER_QUEUE_DISABLED Service Broker 이벤트 후에 발생하도록 디자인할 수 있습니다. QUEUE_ACTIVATION 이벤트는 큐에 처리할 메시지가 있을 때 발생합니다. 자세한 내용은 Event-Based Activation을 참조하십시오. BROKER_QUEUE_DISABLED 이벤트는 큐 상태가 OFF로 설정될 때 발생합니다. 자세한 내용은 Handling Poison Messages를 참조하십시오.
이벤트 알림을 발생시킬 미리 정의된 DDL 문 그룹 선택
미리 정의된 유사 이벤트 그룹에 속한 Transact-SQL 이벤트가 실행된 후 이벤트 알림이 발생할 수 있습니다. 예를 들어 CREATE TABLE, ALTER TABLE 또는 DROP TABLE 문이 실행된 후 이벤트 알림이 발생하도록 하려면 CREATE EVENT NOTIFICATION 문에서 FOR DDL_TABLE_EVENTS를 지정합니다. CREATE EVENT NOTIFICATION을 실행하면 이벤트 그룹에 속하는 이벤트가 sys.events 카탈로그 뷰에 추가됩니다.
이벤트 알림에 사용할 수 있는 미리 정의된 DDL 및 DML 문 그룹의 목록, 그룹에 포함된 특정 문 및 이러한 이벤트 그룹을 실행할 수 있는 범위는 이벤트 알림 사용에 대한 DDL 이벤트 그룹을 참조하십시오.
이벤트 알림을 발생시킬 미리 정의된 SQL Trace 이벤트 그룹 선택
미리 정의된 유사 추적 이벤트 그룹에 속한 SQL Trace 이벤트가 실행된 후 이벤트 알림이 발생할 수 있습니다. 예를 들어 LOCK_DEADLOCK, LOCK_DEADLOCK_CHAIN, LOCK_ESCALATION 및 DEADLOCK_GRAPH 이벤트를 포함하는 잠금 관련 추적 이벤트가 발생한 후 이벤트 알림이 발생하도록 하려면 CREATE EVENT NOTIFICATION 문에서 FOR TRC_LOCKS를 지정합니다.
이벤트 알림에 사용할 수 있는 미리 정의된 SQL Trace 이벤트 목록은 이벤트 알림 사용에 대한 추적 이벤트 그룹을 참조하십시오. 이 그룹은 서버 인스턴스 수준에서만 실행될 수 있습니다.
참고 항목
개념
관련 자료
도움말 및 정보
변경 내역
릴리스 | 내역 |
---|---|
2006년 4월 14일 |
|
2005년 12월 5일 |
|