이벤트 알림 구현Implement Event Notifications

이벤트 알림을 구현하려면 먼저 이벤트 알림을 받을 대상 서비스를 만든 다음 이벤트 알림을 만들어야 합니다.To implement an event notification, you must first create a target service to receive event notifications, and then create the event notification.

중요

Service BrokerService Broker 대화 보안을 구성해야 합니다. Service BrokerService Broker dialog security should be configured for event notifications that send messages to a service broker on a remote server. 대화 보안은 전체 보안 모델에 따라 수동으로 구성해야 합니다.Dialog security must be configured manually according to the full security model.

대상 서비스 만들기Creating the Target Service

Service BrokerService Broker에는 다음 특정 메시지 유형과 이벤트 알림에 대한 계약이 포함되어 있으므로 Service BrokerService Broker 를 시작하는 서비스를 만들지 않아도 됩니다.You do not have to create a Service BrokerService Broker-initiating service because Service BrokerService Broker includes the following specific message type and contract for event notifications:

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

이벤트 알림을 받는 대상 서비스는 이러한 기존 계약을 인식해야 합니다.The target service that receives event notifications must honor this preexisting contract.

대상 서비스를 만들려면To create a target service:

  1. 메시지를 받을 큐를 만듭니다.Create a queue to receive messages.

    참고

    큐에서 http://schemas.microsoft.com/SQL/Notifications/QueryNotification의 메시지 유형을 받습니다.The queue receives the following message type: http://schemas.microsoft.com/SQL/Notifications/QueryNotification.

  2. 이벤트 알림 계약을 참조하는 큐에 서비스를 만듭니다.Create a service on the queue that references the event notifications contract.

  3. 서비스에 경로를 만들어 Service BrokerService Broker 에서 서비스에 대한 메시지를 보낼 주소를 정의합니다.Create a route on the service to define the address to which Service BrokerService Broker sends messages for the service. 같은 데이터베이스의 서비스를 대상으로 하는 이벤트 알림의 경우 ADDRESS = 'LOCAL'을 지정합니다.For event notifications that target a service in the same database, specify ADDRESS = 'LOCAL'.

    참고

    Service BrokerService Broker 라우팅에 의해 알림 메시지를 받는 서비스가 결정됩니다. routing determines the service that receives the notification messages. 이벤트 알림 대상이 원격 서버의 서비스일 경우 양방향 통신을 위해 원본 서버와 대상 서버에 모두 경로가 정의되어 있어야 합니다.If the event notification targets a service on a remote server, both the source server and the target server must have routes defined on them to make sure that two-way communication occurs.

    다음 예에서는 이벤트 알림 계약의 메시지를 처리하기 위해 큐, 큐의 서비스 및 서비스의 경로를 만듭니다.The following example creates a queue, a service on the queue, and a route on the service to handle messages from the event notification contract.

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  

이벤트 알림 만들기Creating the Event Notification

이벤트 알림은 Transact-SQLTransact-SQL CREATE EVENT NOTIFICATION 문으로 만들고 DROP EVENT NOTIFICATION 문으로 삭제합니다.Event notifications are created by using the Transact-SQLTransact-SQL CREATE EVENT NOTIFICATION statement, and are dropped by using the DROP EVENT NOTIFICATION STATEMENT. 이벤트 알림을 수정하려면 해당 이벤트 알림을 삭제하고 다시 만들어야 합니다.To modify an event notification, you must drop and re-create the event notification.

다음 예에서는 CreateDatabaseNotification이벤트 알림을 만듭니다.The following example creates the event notification CreateDatabaseNotification. 이 알림은 서버에서 발생하는 CREATE_DATABASE 이벤트에 대한 메시지를 이전에 만든 NotifyService 서비스로 보냅니다.This notification sends a message about any CREATE_DATABASE event that occurs on the server to the NotifyService service that was previously created.

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

이벤트 알림은 CREATE_SCHEMA 이벤트와 CREATE SCHEMA 문의 <schema_element> 정의를 별도의 이벤트로 인식합니다.Event notifications recognize CREATE_SCHEMA events and the <schema_element> definitions of CREATE SCHEMA statements as separate events. 예를 들어 CREATE_SCHEMA 및 CREATE_TABLE 이벤트에서 모두 이벤트 알림이 생성되며 다음 일괄 작업을 실행합니다.For example, an event notification is created on both the CREATE_SCHEMA and CREATE_TABLE events, and you run the following batch.

CREATE SCHEMA s

CREATE TABLE t1 (col1 int)

이 경우 이벤트 알림은 CREATE_SCHEMA 이벤트가 발생할 때와 CREATE_TABLE 이벤트가 발생할 때 각각 한 번씩, 두 번 발생합니다.In this case, the event notification is raised two times: Onne time when the CREATE_SCHEMA event occurs, and again when the CREATE_TABLE event occurs. CREATE_SCHEMA 이벤트 및 해당하는 CREATE SCHEMA 정의의 <schema_element> 텍스트 둘 다에 대해 이벤트 알림이 생성되는 것을 방지하거나 필요 없는 이벤트 데이터의 캡처를 방지하는 논리를 응용 프로그램에 구축하는 것이 좋습니다.We recommend that you either avoid creating event notifications on both the CREATE_SCHEMA events and the <schema_element> texts of any corresponding CREATE SCHEMA definitions, or build logic into your application to avoid capturing unwanted event data.

이벤트 알림을 만들려면To create an event notification

참고 항목See Also

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