다음을 통해 공유


이벤트 알림 디자인

업데이트: 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 이벤트 목록은 이벤트 알림 사용에 대한 추적 이벤트 그룹을 참조하십시오. 이 그룹은 서버 인스턴스 수준에서만 실행될 수 있습니다.

참고 항목

개념

이벤트 알림 이해
이벤트 알림 구현

관련 자료

EVENTDATA(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기

변경 내역

릴리스 내역

2006년 4월 14일

새로운 내용
  • 이벤트 알림을 테스트하여 실행된 저장 프로시저에 대한 이벤트 알림의 응답을 확인하도록 권장하는 참고를 추가했습니다.
  • sys.event_notification_event_types 카탈로그 뷰에 대한 참조를 추가했습니다.

2005년 12월 5일

변경된 내용
  • 특정 저장 프로시저가 실행된 후 발생할 수 있는 이벤트 알림에 대한 정보를 "이벤트 알림을 발생시킬 특정 DDL 문 선택" 섹션에 추가했습니다.