다음을 통해 공유


쿼리 알림 구독 만들기

알림 구독에서는 명령을 만들고, 명령에 알림 요청을 연결한 다음 명령을 실행합니다. 쿼리 알림 구독은 데이터베이스 액세스 인터페이스로부터 생성되어야 합니다. Transact-SQL은 쿼리 알림 구독을 만들기 위한 메커니즘을 제공하지 않습니다.

데이터베이스 엔진은 명령에서 Transact-SQL 문에 대한 알림을 즉시 등록합니다. 쿼리 알림 요구 사항에 부합되지 않는 각 문에 대해서는 데이터베이스 엔진이 즉시 알림을 만듭니다. 요구 사항에 부합되는 문에 대해서는 구독이 생성됩니다. 요구 사항에 부합되는 문과 요구 사항에 부합되지 않는 문을 모두 포함하는 명령은 서버에 보내지 않도록 주의해야 합니다.

[!참고] Transact-SQL은 알림에 구독할 수 있는 방법을 제공하지 않습니다. SQL Server 내에서 호스팅되는 CLR 데이터 액세스 클래스는 쿼리 알림을 지원하지 않습니다.

각 쿼리 알림 구독은 하나의 알림 이벤트를 생성합니다. 알림이 발생한 후 SQL Server는 알림 구독을 제거합니다. 따라서 다시 알림을 받아야 하는 응용 프로그램에서는 변경된 데이터를 검색하는 명령으로 새 알림을 요청해야 합니다.

쿼리 알림을 요청하는 작업은 트랜잭션 작업이 아닙니다. 한 명령에 대한 알림을 요청하면 데이터베이스 엔진이 해당 명령을 포함하는 트랜잭션이 커밋되거나 롤백되는지 여부에 관계없이 알림을 등록합니다.

쿼리 알림에 대한 구독은 쿼리가 실행되는 데이터베이스에 저장됩니다. 동적 관리 뷰 sys.dm_qn_subscriptions는 현재 사용 중인 쿼리 알림 구독에 대한 정보를 제공합니다. 카탈로그 뷰 sys.internal_tables는 현재 사용 중인 쿼리 알림 구독에서 사용되는 공간을 표시합니다.

SqlClient 관리 공급자를 사용하여 알림 구독 전략 선택

알림 구독을 요청하는 데는 두 가지 방법이 있습니다. 종속성은 쿼리 알림에 대한 상위 수준의 인터페이스를 제공합니다. 응용 프로그램은 ADO.NET의 SqlDependency와 같은 종속성 클래스 항목을 만들고 알림 이벤트를 수신하기 위한 처리기를 등록하고 쿼리 명령에 종속성 개체를 추가합니다. 종속성 개체는 알림이 발생할 때 이 처리기를 호출합니다.

알림 요청은 쿼리 알림에 대해 보다 유연한 하위 수준의 인터페이스를 제공합니다. 종속성에서와 같이 응용 프로그램은 ADO.NET의 SqlNotificationRequest 항목과 같은 알림 요청을 만들고 이 알림 요청을 쿼리 명령에 연결합니다. 종속성과는 달리 알림 요청은 단순히 쿼리에 대한 알림 구독을 요청합니다. 응용 프로그램 자체에서는 데이터베이스로부터 알림 메시지를 검색하고 메시지를 처리하고 그에 따라 반응해야 합니다. 이러한 방식은 응용 프로그램 디자인에 더 많은 유연성을 제공하지만 조금 더 많은 노력이 필요합니다. 알림 요청은 알림 처리에 유연성이 필요한 응용 프로그램에 적합합니다. 예를 들어 예정된 기반에 따라 실행되는 응용 프로그램에서는 응용 프로그램이 종료될 때 종속성 개체가 제거되기 때문에 종속성을 사용할 수 없습니다. 하지만 알림 요청을 사용할 경우에는 응용 프로그램이 시작 시에 큐를 검사하고 필요에 따라 로컬 데이터 캐시를 새로 고칠 수 있습니다.

종속성은 알림 구독을 등록하는 응용 프로그램이 또한 알림을 요청하는 응용 프로그램인 경우, 응용 프로그램이 계속해서 실행 중인 상태로 남는 경우 및 응용 프로그램이 실행 중인 동안 데이터베이스에 대한 연결성이 제공되는 경우에 응용 프로그램에 사용됩니다. 이러한 요구 사항에 부합되는 응용 프로그램의 경우에는 종속성이 쿼리 알림을 쉽게 사용할 수 있는 방법을 제공합니다. 알림 요청은 종속성을 사용할 수 없는 응용 프로그램의 경우에 사용됩니다. 이 경우 응용 프로그램 개발자는 응용 프로그램에 적합한 메시지를 받고 처리하기 위한 전략을 디자인해야 합니다.

알림에 SOAP 사용

네이티브 HTTP SOAP 지원에는 쿼리 알림에 대한 지원이 포함됩니다. <notificationRequest> 헤더를 포함하는 SOAP 요청은 쿼리에 대한 알림 구독을 만듭니다. SqlNotificationRequest에서와 같이 요청자는 데이터베이스로부터 알림 메시지를 검색하고 메시지를 처리하고 그에 따라 반응해야 합니다. 이러한 접근 방식은 SQL Server에 대한 지속적인 연결이 필요하지 않기 때문에 웹 서비스 응용 프로그램에 적합합니다.

알림에 SQL Server 네이티브 클라이언트 사용

SQL Server 네이티브 클라이언트 OLE DB 공급자나 ODBC 드라이버를 사용하는 응용 프로그램에서는 알림 요청을 제출할 수도 있습니다. SQL Server 네이티브 클라이언트 응용 프로그램에서 쿼리 알림을 사용하는 방법은 Working with Query Notifications을 참조하십시오.

참고 항목

개념

쿼리 알림 발생 시점 이해
SqlDependency를 사용하여 쿼리 알림 구독
SqlNotificationRequest를 사용하여 쿼리 알림 구독

도움말 및 정보

SQL Server 2005 지원 받기