활성화 저장 프로시저 문제 해결
활성화된 저장 프로시저는 백그라운드 세션에서 실행됩니다. 따라서 활성화 저장 프로시저의 문제 해결 방법은 대화형 세션에 속한 저장 프로시저의 문제를 해결하는 데 사용되는 방법과 약간 다릅니다.
방법: 활성화 저장 프로시저 출력 보기
데이터베이스 엔진에서는 활성화된 저장 프로시저의 출력을 SQL Server 오류 로그에 기록합니다. 활성화된 저장 프로시저에서 잘못된 결과가 발생하거나 큐를 읽지 못하는 경우 SQL Server 오류 로그에서 프로시저의 출력을 확인합니다. 종종 저장 프로시저 출력에서 문제를 찾는 데 충분한 정보를 제공하기도 합니다.
방법: 대화형 세션에서 저장 프로시저 실행
활성화 저장 프로시저의 문제를 해결하는 가장 좋은 방법 중 하나는 큐에서 활성화를 해제한 다음 SQL Server Management Studio(또는 sqlcmd 유틸리티)에서 저장 프로시저를 실행하는 것입니다. 대화형 세션에서 저장 프로시저를 실행하면 저장 프로시저에서 반환되는 오류를 볼 수 있습니다.
그러나 저장 프로시저가 데이터베이스 엔진에서 활성화되는 경우에는 데이터베이스 설정과 보안 컨텍스트가 다를 수 있습니다. 프로시저를 실행하기 전에 EXECUTE AS를 사용하여 세션에 대한 사용자를 활성화에 지정된 사용자로 설정하고 세션에 대한 옵션을 데이터베이스 기본값으로 설정합니다.
자세한 내용은 Internal Activation Context를 참조하십시오.
증상: 활성화 저장 프로시저가 실행되지 않는 경우
이러한 증상의 일반적인 원인으로는 다음 몇 가지가 있습니다.
큐의 설정이 변경되었을 수 있습니다. sys.service_queues 카탈로그 뷰를 사용하여 큐의 설정을 확인합니다. 특히 큐의 활성화가 설정되었는지, 큐에서 올바른 저장 프로시저를 지정하는지 그리고 큐에서 올바른 보안 주체를 지정하는지를 확인합니다. 해당 보안 주체에 저장 프로시저에 대한 실행 권한이 있는지 확인합니다.
저장 프로시저를 시작할 수 없거나 시작 후 바로 종료될 수 있습니다. 이러한 경우 SQL Server 오류 로그에서 저장 프로시저의 오류를 확인합니다. SQL Server Management Studio에서 저장 프로시저를 실행하여 결과를 확인할 수도 있습니다.
증상: 메시지가 큐에 남아 있는 경우
활성화 저장 프로시저가 올바르게 시작되는지 다음과 같이 확인합니다.
- sys.dm_broker_queue_monitors 동적 관리 뷰를 검사하여 해당 큐의 큐 모니터가 활성 상태인지 확인합니다. 활성 상태가 아니라면 해당 큐의 활성화가 ON으로 설정되지 않았습니다. ALTER QUEUE 문을 사용하여 활성화를 ON으로 설정합니다.
- 큐에 대한 큐 모니터의 상태가 RECEIVES_OCCURRING여야 합니다. 큐 모니터가 이 상태가 아니라면 sys.dm_broker_activated_tasks 동적 관리 뷰를 검사하여 큐에 대한 활성화된 작업이 현재 실행되고 있는지 확인합니다. 활성화된 작업이 없으면 활성화가 실패합니다. 이 섹션의 "증상: 활성화 저장 프로시저가 실행되지 않는 경우"를 참조하십시오.
활성화된 작업이 실행 중이지만 메시지가 큐에 남아 있으면 작업이 트랜잭션을 받지 못하거나 커밋하지 못하는 것입니다. SQL Server 오류 로그에서 저장 프로시저의 오류를 확인합니다. 활성화를 중지하고 저장 프로시저를 직접 실행하면 문제를 해결하는 데 도움이 될 수 있습니다.
참고 항목
관련 자료
sys.service_queues(Transact-SQL)
sys.dm_broker_queue_monitors
sys.dm_broker_activated_tasks