대화 우선 순위 문제 해결

적용 대상:SQL ServerAzure SQL Managed Instance

이 항목에서는 Service Broker 대화 우선 순위와 관련된 일반적인 문제를 해결하기 위한 제안 사항을 제공합니다.

방법: HONOR_BROKER_PRIORITY가 ON인지 확인

sys.databasesis_broker_priority_honored 열을 사용하여 HONOR_BROKER_PRIORITY 데이터베이스 옵션의 상태를 확인합니다.

    SELECT name AS database_name,
           CASE is_broker_priority_honored
                WHEN 0 THEN N'OFF'
                WHEN 1 THEN N'ON'
           END AS is_broker_priority_honored
    FROM sys.databases
    ORDER BY database_name;

증상: 메시지가 우선 순위 순서에 따라 전송되지 않음

SQL Server Profiler 추적을 열고 Broker Remote Message Ack 이벤트를 검토합니다. StarvationElevation 열의 값 1은 메시지의 우선 순위가 고갈 방지를 위해 승격되었음을 나타냅니다. HonorBokerPriority 열의 값 0은 보내는 데이터베이스에 HONOR_BROKER_PRIORITY 옵션이 설정되지 않았음을 나타냅니다.

또한 Broker/DBM 전송 시스템 모니터 카운터를 검토하여 다른 우선 순위 수준 메시지의 전송 속도를 확인합니다.

증상: 메시지가 우선 순위 순서에 따라 수신되지 않음

RECEIVE 문은 하나의 대화 그룹에서만 메시지를 검색합니다. 다른 대화 그룹에 속하는 경우 우선 순위가 높은 대화에서 메시지를 수신하지 않습니다.

WHERE 절이 없는 RECEIVE 문은 우선 순위가 가장 높은 잠금 해제된 대화 그룹에서 메시지를 검색합니다. 대화 그룹에 높은 우선 순위와 낮은 우선 순위의 대화가 혼합된 경우 RECEIVE 문은 우선 순위가 낮은 대화에서 메시지를 검색할 수 있습니다. 이 문제는 큐에 다른 그룹의 우선 순위가 높은 대화의 메시지가 있는 경우에도 발생할 수 있습니다.

대화 그룹을 지정하는 WHERE 절이 있는 RECEIVE 문은 지정된 대화 그룹에서만 메시지를 검색합니다. RECEIVE 문은 다른 대화 그룹의 메시지 우선 순위 수준과 관계없이 그룹의 우선 순위가 낮은 대화에서 메시지를 검색합니다.

증상: 메시지에 예상 우선 순위 수준이 할당되지 않음

sys.conversation_endpoint를 검토하여 대화 엔드포인트에 예상 우선 순위 수준이 할당되었는지 확인합니다. 대화 엔드포인트에 예상 우선 순위 수준이 할당되지 않은 경우 sys.conversation_priorites를 사용하여 데이터베이스에 있는 대화 우선 순위에 지정된 속성을 대화 엔드포인트에 사용되는 계약, 로컬 서비스 및 원격 서비스에 대해 검토합니다.

참고 항목