다음을 통해 공유


알림 수신

대부분의 응용 프로그램은 코드가 포함되어 있지 않아도 쿼리 알림을 받거나 처리할 수 있습니다. SqlDependency 개체가 알림 구독을 관리하는 경우 이 개체는 구독을 자동으로 모니터링합니다. 알림 메시지가 도착하면 SqlDependency 개체는 SqlDependency 개체에 등록된 이벤트 처리기를 호출합니다. 이 방법을 사용하면 알림을 받기 위한 특별한 작업이 필요하지 않습니다. SqlDependency를 사용하는 응용 프로그램은 알림 메시지를 받거나 처리하지 않아도 됩니다.

이와는 반대로 응용 프로그램이 알림 요청을 사용하는 경우 응용 프로그램은 큐를 모니터링하여 알림 메시지에 응답해야 합니다. 이 경우 알림을 받은 서비스에 대해 메시지를 처리하는 응용 프로그램을 작성합니다. 알림을 요청한 응용 프로그램이 메시지를 처리하는 동일한 응용 프로그램일 수 있으며 그렇지 않은 경우에는 쿼리 알림 메시지를 받고 그러한 메시지에 응답하도록 다른 응용 프로그램을 작성할 수 있습니다.

SQL Server는 알림 ID와 제출된 실제 쿼리 조합을 사용하여 알림 구독을 추적합니다. 응용 프로그램이 같은 알림 ID를 사용하여 두 개의 다른 쿼리에 대한 알림을 요청하는 경우 SQL Server는 같은 알림 ID를 갖는 두 개의 구독을 만듭니다. 그러나 응용 프로그램이 같은 알림 ID로 동일한 쿼리에 대한 알림을 두 번 요청하면 SQL Server는 두 번째 요청에 지정된 제한 시간을 사용하여 단일 구독을 만듭니다.

데이터베이스에서 실행되는 응용 프로그램은 일반적으로 메시지가 도착하면 큐에서 활성화되는 저장 프로시저입니다. 이러한 저장 프로시저는 Transact-SQL 또는 .NET 언어 중 하나로 작성할 수 있습니다. 응용 프로그램을 예약된 작업으로 실행하거나 시작 태스크를 사용하여 저장 프로시저를 백그라운드로 계속 실행할 수 있지만 이 방법은 많이 사용되지 않습니다.

데이터베이스 외부에서 실행되는 응용 프로그램은 일반적으로 다음 방법 중 하나를 사용하여 메시지를 받습니다.

  • 메시지가 도착했는지 여부를 확인하기 위해 응용 프로그램이 큐를 주기적으로 폴링합니다.

  • 응용 프로그램이 RECEIVE 문의 WAITFOR 절을 사용하여 이 문이 적어도 한 행을 반환할 때까지 RECEIVE 문에서의 일괄 처리나 저장 프로시저 실행을 차단할 수 있습니다.

  • 응용 프로그램이 알림을 받은 큐에서 QUEUE_ACTIVATION 이벤트에 대한 이벤트 알림을 만들 수 있습니다. 그런 다음 이전의 두 가지 전략 중 하나를 사용하여 활성화 이벤트를 받는 서비스를 모니터링할 수 있습니다.

메시지에 대한 응답에 일부 외부 동작을 취하는 CLR(공용 언어 런타임) 저장 프로시저를 작성하거나 WMI를 사용하여 큐 활성화를 모니터링할 수 있지만 이 방법은 많이 사용되지 않습니다.

쿼리 알림 대화 상자에 항상 한 개의 알림 메시지가 들어 있으므로 쿼리 알림을 처리하는 응용 프로그램이 메시지를 받은 다음 대화를 종료해야 합니다. 그렇지 않으면 대화 시간이 초과됩니다. 쿼리 알림 대화 시간이 초과되면 SQL Server는 대화 시간 초과 오류를 SQL Server 오류 로그에 기록합니다.

Service Broker를 사용하는 응용 프로그램을 작성하는 방법은 Service Broker를 사용한 프로그래밍의 장점를 참조하십시오. Service Broker를 사용하는 응용 프로그램을 시작하는 방법은 시작 전략 선택를 참조하십시오.

참고 항목

참조

개념