Share via


활성화 저장 프로시저 문제 해결

활성화된 저장 프로시저는 백그라운드 세션에서 실행됩니다. 따라서 활성화 저장 프로시저의 문제 해결 방법은 대화형 세션에 속한 저장 프로시저의 문제를 해결하는 데 사용되는 방법과 약간 다릅니다.

방법: Service Broker 구성 분석

활성화된 저장 프로시저가 성공적으로 실행되지 않을 경우 ssbdiagnose 유틸리티를 사용하여 관련 서비스에서 구성 오류를 찾습니다. 자세한 내용은 ssbdiagnose 유틸리티를 참조하십시오.

방법: 활성화 저장 프로시저 출력 보기

활성화된 저장 프로시저에서 잘못된 결과가 발생하거나 큐를 읽지 못하는 경우 SQL Server 오류 로그에서 문제를 찾는 데 도움이 되는 오류 및 메시지를 확인합니다. 활성화된 저장 프로시저는 어떠한 응용 프로그램과도 연결되지 않습니다. 대신 호출 응용 프로그램으로 반환되는 정보는 일반적으로 SQL Server 오류 로그에 포함됩니다. 여기에는 오류, 메시지 및 PRINT와 RAISERROR 문의 출력이 포함됩니다.

방법: 대화형 세션에서 저장 프로시저 실행

활성화 저장 프로시저의 문제를 해결하려면 큐에서 활성화를 해제한 다음 SQL Server Management Studio 또는 sqlcmd 유틸리티에서 저장 프로시저를 실행합니다. 대화형 세션에서 저장 프로시저를 실행하면 저장 프로시저에서 반환되는 오류를 볼 수 있습니다.

그러나 대화형 세션에서 보안 컨텍스트 및 데이터베이스 설정이 저장 프로시저가 데이터베이스 엔진에 의해 활성화된 시점과 다른 경우 결과가 다를 수도 있습니다. 프로시저를 실행하려면 먼저 다음을 수행하십시오.

  • EXECUTE AS를 사용하여 대화형 세션의 사용자를 활성화에 대해 지정된 사용자로 지정합니다.

  • 세션의 옵션을 데이터베이스 기본값으로 설정합니다.

자세한 내용은 내부 활성화 컨텍스트를 참조하십시오.

증상: 활성화 저장 프로시저가 실행되지 않는 경우

이 증상의 일반적인 원인은 다음과 같습니다.

  • 큐의 설정이 변경되었을 수 있습니다. sys.service_queues 카탈로그 뷰를 사용하여 큐의 설정을 확인합니다. 큐의 활성화가 설정되었는지, 큐에서 올바른 저장 프로시저를 지정하는지 그리고 큐에서 올바른 보안 주체를 지정하는지를 확인합니다. 해당 보안 주체에 저장 프로시저에 대한 실행 권한이 있는지 확인합니다.

  • 저장 프로시저가 시작되지 않거나 시작 후 바로 종료될 수 있습니다. 이러한 경우 SQL Server 오류 로그에서 저장 프로시저의 오류를 확인합니다. SQL Server Management Studio에서 저장 프로시저를 실행하여 결과를 확인할 수도 있습니다.

증상: 메시지가 큐에 남아 있는 경우

활성화 저장 프로시저가 올바르게 시작되는지 다음과 같이 확인합니다.

  • sys.dm_broker_queue_monitors 동적 관리 뷰를 검사하여 해당 큐의 큐 모니터가 활성 상태인지 확인합니다. 활성 상태가 아닌 경우 ALTER QUEUE 문을 사용하여 활성화를 ON으로 설정합니다.

  • 큐에 대한 큐 모니터의 상태가 RECEIVES_OCCURRING여야 합니다. 큐 모니터가 이 상태가 아니라면 sys.dm_broker_activated_tasks 동적 관리 뷰를 검사하여 큐에 대한 활성화된 태스크가 현재 실행되고 있는지 확인합니다. 활성화된 태스크가 없으면 활성화가 실패합니다. 자세한 내용은 이 항목의 앞부분에 있는 "증상: 활성화 저장 프로시저가 실행되지 않는 경우" 섹션을 참조하십시오.

활성화된 태스크가 실행 중이지만 메시지가 큐에 남아 있으면 작업이 트랜잭션을 받지 못하거나 커밋하지 못하는 것입니다. SQL Server 오류 로그에서 저장 프로시저의 오류를 확인합니다. 활성화를 중지하고 저장 프로시저를 직접 실행하면 문제를 해결하는 데 도움이 될 수 있습니다.