다음을 통해 공유


이벤트 알림 구현

적용 대상:SQL Server

이벤트 알림을 구현하려면 먼저 이벤트 알림을 받을 대상 서비스를 만든 다음 이벤트 알림을 만들어야 합니다.

중요

Service Broker 대화 보안을 구성해야 합니다. 대화 보안은 전체 보안 모델에 따라 수동으로 구성해야 합니다.

대상 서비스 만들기

Service Broker에는 이벤트 알림에 대한 다음과 같은 특정 메시지 유형 및 계약이 포함되어 있으므로 Service Broker 시작 서비스를 만들 필요가 없습니다.

https://schemas.microsoft.com/SQL/Notifications/PostEventNotification  

이벤트 알림을 받는 대상 서비스는 이러한 기존 계약을 인식해야 합니다.

대상 서비스를 만들려면

  1. 메시지를 받을 큐 만들기

    참고 항목

    큐는 다음과 같은 메시지 유형을 받습니다http://schemas.microsoft.com/SQL/Notifications/QueryNotification.

  2. 이벤트 알림 계약을 참조하는 큐에 서비스를 만듭니다.

  3. 서비스에 대한 경로를 만들어 Service Broker가 서비스에 대한 메시지를 보내는 주소를 정의합니다. 동일한 데이터베이스 ADDRESS = 'LOCAL'의 서비스를 대상으로 하는 이벤트 알림의 경우.

    참고 항목

    Service Broker 라우팅은 알림 메시지를 받는 서비스를 결정합니다. 이벤트 알림이 원격 서버의 서비스를 대상으로 하는 경우 원본 서버와 대상 서버 모두 양방향 통신이 발생하는지 확인하기 위해 경로가 정의되어 있어야 합니다.

다음 예제에서는 큐, 큐의 서비스 및 이벤트 알림 계약의 메시지를 처리하는 서비스의 경로를 만듭니다.

CREATE QUEUE NotifyQueue ;  
GO  
CREATE SERVICE NotifyService  
ON QUEUE NotifyQueue  
(  
[http://schemas.microsoft.com/SQL/Notifications/PostEventNotification]  
);  
GO  
CREATE ROUTE NotifyRoute  
WITH SERVICE_NAME = 'NotifyService',  
ADDRESS = 'LOCAL';  
GO  

이벤트 알림 만들기

이벤트 알림은 Transact-SQL CREATE EVENT NOTIFICATION 문을 사용하여 만들어지고 DROP EVENT NOTIFICATION 문을 사용하여 삭제됩니다. 이벤트 알림을 수정하려면 이벤트 알림을 삭제하고 다시 만들어야 합니다.

다음 예에서는 CreateDatabaseNotification이벤트 알림을 만듭니다. 이 알림은 서버에서 발생하는 모든 CREATE_DATABASE 이벤트에 대한 메시지를 이전에 만든 NotifyService 서비스로 보냅니다.

CREATE EVENT NOTIFICATION CreateDatabaseNotification  
ON SERVER  
FOR CREATE_DATABASE  
TO SERVICE 'NotifyService', '8140a771-3c4b-4479-8ac0-81008ab17984' ;  

주의

이벤트 알림은 CREATE_SCHEMA 이벤트 및 <CREATE SCHEMA 문의 schema_element> 정의를 별도의 이벤트로 인식합니다. 예를 들어 이벤트 알림은 CREATE_SCHEMA 이벤트와 CREATE_TABLE 이벤트 모두에서 생성되며 다음 일괄 처리를 실행합니다.

CREATE SCHEMA s

CREATE TABLE t1 (col1 int)

이 경우 이벤트 알림은 두 번 발생합니다. 즉, CREATE_SCHEMA 이벤트가 발생할 때 한 번, CREATE_TABLE 이벤트가 발생할 때 다시 발생합니다. CREATE_SCHEMA 이벤트와 해당 CREATE SCHEMA 정의의 <schema_element> 텍스트 모두에게 이벤트 알림이 생성되는 것을 방지하거나 원치 않는 이벤트 데이터 캡처를 막는 논리를 응용 프로그램에 빌드하는 것이 좋습니다.

이벤트 알림을 만들려면

이벤트 알림을 삭제하려면

참고 항목

이벤트 알림에 대한 정보 가져오기
EVENTDATA(Transact-SQL)