이벤트 알림 이해
이벤트 알림은 다양한 Transact-SQL DDL(데이터 언어 정의) 문과 SQL Trace 이벤트에 대한 응답으로 실행되어 이러한 이벤트에 대한 정보를 Service Broker 서비스로 보냅니다.
이벤트 알림을 사용하여 다음을 수행할 수 있습니다.
데이터베이스에서 발생하는 변경 내용이나 작업 기록 및 검토
동기 방식이 아닌 비동기 방식으로 이벤트에 응답하여 동작 수행
이벤트 알림은 DDL 트리거 및 SQL Trace에 대한 대체 프로그래밍 기능을 제공합니다.
이벤트 알림은 트랜잭션 범위 밖에서 비동기적으로 실행됩니다. 따라서 DDL 트리거와 달리 이벤트 알림은 데이터베이스 응용 프로그램 내에서 사용되어 최근 트랜잭션에서 정의한 리소스를 사용하지 않고 이벤트에 응답할 수 있습니다. 자세한 내용은 이벤트 알림 및 트리거 이해를 참조하십시오.
SQL Trace와 달리 이벤트 알림을 사용하여 SQL Server 인스턴스 내에서 SQL Trace 이벤트에 응답하는 동작을 수행할 수 있습니다. 자세한 내용은 이벤트 알림 및 SQL Trace 이해를 참조하십시오.
이벤트 알림이 생성되면 SQL Server 인스턴스와 지정한 대상 서비스 간에 하나 이상의 Service Broker 대화가 열립니다. 대화는 일반적으로 이벤트 알림이 서버 인스턴스의 개체로 존재하는 한 열린 상태로 유지됩니다. 몇몇 오류가 발생하는 경우에는 이벤트 알림을 삭제하기 전에 대화가 종료될 수 있습니다. 이러한 대화는 이벤트 알림 간에 공유되지 않습니다. 각 이벤트 알림에는 자체적인 배타 대화가 있습니다. 대화를 명시적으로 종료하면 대상 서비스가 더 이상의 메시지를 받지 못하게 되며 이벤트 알림이 다음에 실행될 때 해당 대화가 다시 열리지 않습니다.
이벤트 정보는 이벤트 발생 시기, 영향을 받는 데이터베이스 개체, 관련된 Transact-SQL 일괄 처리 문 및 기타 정보를 제공하는 xml 유형의 변수로 Service Broker에 전달됩니다. 이벤트 알림이 만드는 XML 스키마에 대한 자세한 내용은 EVENTDATA(Transact-SQL)를 참조하십시오.
이벤트 데이터는 SQL Server와 함께 실행되어 진행률을 추적하고 결정을 내리는 응용 프로그램에 의해 사용될 수 있습니다. 예를 들어 다음 이벤트 알림은 AdventureWorks2008R2 예제 데이터베이스에서 ALTER TABLE 문이 실행될 때마다 특정 서비스에 알림을 보냅니다.
USE AdventureWorks2008R2;
GO
CREATE EVENT NOTIFICATION NotifyALTER_T1
ON DATABASE
FOR ALTER_TABLE
TO SERVICE '//Adventure-Works.com/ArchiveService' ,
'8140a771-3c4b-4479-8ac0-81008ab17984';
AdventureWorks2008R2 예제 데이터베이스에 대해 실행할 수 있는 이벤트 알림 예제 스크립트인 EventNotificationSample.sql은 SQL Server 데이터베이스 엔진 예제에서 제공합니다.