내부 활성화 컨텍스트
이 항목에서는 내부 활성화에 의해 시작된 저장 프로시저의 실행 컨텍스트에 대해 설명합니다.
보안 컨텍스트
활성화를 사용하도록 구성된 큐에서는 활성화 저장 프로시저를 실행하는 사용자도 지정해야 합니다. SQL Server에서는 저장 프로시저를 시작하기 전에 이 사용자를 가장합니다.
저장 프로시저에서 EXECUTE AS 절도 지정한 경우 두 번의 가장이 발생합니다. SQL Server에서 먼저 큐에 지정된 사용자를 가장하여 저장 프로시저를 실행합니다. 저장 프로시저가 실행되면 해당 프로시저에서는 프로시저의 EXECUTE AS 절에 지정된 사용자를 가장합니다.
원격 서비스 바인딩에 대해 지정된 사용자는 일반적으로 활성화에 대해 지정된 사용자와는 다른 사용자입니다. 또한 각 사용자에게 필요한 사용 권한도 다릅니다. 원격 서비스 바인딩 사용자에게는 큐에서 읽거나 데이터베이스에서 저장 프로시저를 실행할 수 있는 권한이 필요하지 않은 반면, 활성화에 대해 지정된 사용자에게는 서비스에 메시지를 보낼 수 있는 권한이 필요하지 않습니다. 사용자 권한에 대한 자세한 내용은 ID 및 액세스 제어(Service Broker) 및 Service Broker 대화 보안을 참조하십시오.
세션 설정
Service Broker에서는 활성화된 서비스 프로그램을 메시지가 만들어진 연결과는 다른 백그라운드 세션에서 내부적으로 실행합니다. 이 세션에 설정되는 옵션은 데이터베이스의 기본 옵션입니다.
Service Broker가 시작한 세션 내에서 SQL Server는 PRINT 및 RAISERROR 문의 출력을 SQL Server 오류 로그에 기록합니다. Service Broker에서는 활성화된 저장 프로시저에 대한 매개 변수를 제공하지 않습니다. Service Broker에서는 활성화된 저장 프로시저의 반환 값을 고려하지 않으며 활성화된 저장 프로시저의 결과 집합을 처리하지 않습니다.
트랜잭션 컨텍스트
활성화된 저장 프로시저에서는 트랜잭션을 관리해야 합니다. SQL Server에서는 저장 프로시저를 활성화하기 전에는 트랜잭션을 시작하지 않으며, 저장 프로시저는 해당 프로시저를 활성화하는 내부 작업과는 다른 트랜잭션 컨텍스트에서 실행됩니다. 활성화된 저장 프로시저에서 트랜잭션을 관리하는 방법은 트랜잭션 메시징을 참조하십시오.
실패 감지
활성화된 저장 프로시저는 해당 프로시저를 활성화한 큐에서 메시지를 받아야 합니다. 메시지를 받지 않고 저장 프로시저가 종료된 경우나 저장 프로시저가 짧은 제한 시간 후 메시지를 받지 않고 있음을 큐 모니터에서 감지한 경우 큐 모니터에서는 해당 저장 프로시저가 실패한 것으로 간주합니다. 이 경우 큐 모니터는 저장 프로시저의 활성화를 중지합니다.