Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Instância Gerenciada de SQL do Azure
Este tópico fornece sugestões para corrigir sintomas comuns relacionados às prioridades de conversa do Service Broker.
Técnica: como determinar se HONOR_BROKER_PRIORITY está ON
Use a coluna sys.databases is_broker_priority_honored para determinar o estado da opção de banco de dados 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;
Sintoma: as mensagens não são enviadas em sequência de prioridade
Abra um rastreamento SQL Server Profiler e analise os eventos de confirmação de mensagens remotas do Agente. Um valor de 1 na coluna StarvationElevation indica que a prioridade das mensagens foi elevada para evitar privação. Um valor de 0 na coluna HonorBokerPriority indica que a opção HONOR_BROKER_PRIORITY não estava habilitada no banco de dados de envio.
Também analise o contador de Monitor de Sistema de Transporte Agente/DBM para ver as taxas de transmissão para mensagens de diferentes níveis de prioridade.
Sintoma: as mensagens não são recebidas em sequência de prioridade
Uma instrução RECEIVE só recupera mensagens de um grupo de conversa. Ela não receberá mensagens de conversas de alta prioridade caso pertençam a um grupo diferente de conversa.
Uma instrução RECEIVE que não tem uma cláusula WHERE recupera mensagens do grupo de conversa desbloqueado de prioridade mais alta. Se o grupo de conversa tiver uma mistura de conversas de baixa e alta prioridade, a instrução RECEIVE poderá recuperar mensagens de conversas de baixa prioridade. Isso pode ocorrer mesmo que a fila contenha mensagens de conversas de alta prioridade em outros grupos.
Uma instrução RECEIVE com uma cláusula WHERE que especifica um grupo de conversa recupera apenas mensagens do grupo de conversa especificado. A instrução RECEIVE recupera mensagens de conversas de baixa prioridade no grupo, independentemente do nível de prioridade das mensagens de outros grupos de conversa.
Sintoma: as mensagens não recebem o nível de prioridade esperado
Visualize sys.conversation_endpoint para verificar se o ponto de extremidade de conversa recebeu o nível de prioridade esperado. Se não, use sys.conversation_priorites para analisar as propriedades especificadas nas prioridades de conversa do banco de dados no contrato, no serviço local e no serviço remoto usado no ponto de extremidade de conversa.
Confira também
- Agente: Classe de evento Remote Message Ack
- Opções de ALTER DATABASE SET (Transact-SQL)
- ALTER BROKER PRIORITY (Transact-SQL)
- CREATE BROKER PRIORITY (Transact-SQL)
- DROP BROKER PRIORITY (Transact-SQL)
- RECEIVE (Transact-SQL)
- SQL Server, objeto Transporte do Broker/DBM
- sys.conversation_priorities (Transact-SQL)
- sys.databases (Transact-SQL)
- sys.transmission_queue (Transact-SQL)
- Prioridades de Conversa