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 artigo fornece sugestões para corrigir sintomas comuns relacionados às prioridades de conversa do Service Broker.
Técnica: determinar se HONOR_BROKER_PRIORITY está ON
Use a sys.databasesis_broker_priority_honored coluna para determinar o estado da opção HONOR_BROKER_PRIORITY de banco de dados:
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 na sequência de prioridade
Abra um rastreamento do SQL Server Profiler e examine os eventos Broker:Remote Message Ack . Um valor de 1 na StarvationElevation coluna indica que a prioridade das mensagens foi elevada para evitar a fome. Um valor de 0 na HonorBrokerPriority coluna 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 na sequência de prioridade
Uma RECEIVE instrução recupera apenas mensagens de um grupo de conversa. Ele não receberá mensagens de conversas de alta prioridade se pertencerem a um grupo de conversa diferente.
Uma RECEIVE instrução que não tem uma WHERE cláusula recupera mensagens do grupo de conversa desbloqueado de prioridade mais alta. Se o grupo de conversa tiver uma combinação de conversas de alta prioridade e de baixa prioridade, a RECEIVE instrução poderá recuperar mensagens das conversas de baixa prioridade. Esse cenário pode ocorrer mesmo se a fila tiver mensagens de conversas de alta prioridade em outros grupos.
Uma RECEIVE instrução que tem uma WHERE cláusula que especifica um grupo de conversa recupera apenas mensagens do grupo de conversa especificado. A RECEIVE instrução 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 são atribuídas ao nível de prioridade esperado
Veja sys.conversation_endpoint se o ponto de extremidade da conversa recebeu o nível de prioridade esperado. Caso contrário, use sys.conversation_priorities para examinar as propriedades especificadas para as prioridades de conversa no banco de dados em relação ao contrato, serviço local e serviço remoto que é usado para o ponto de extremidade de conversa.
Conteúdo relacionado
- Agente: Classe de evento Remote Message Ack
- Opções de ALTER DATABASE SET (Transact-SQL)
- ALTER BROKER PRIORITY (Transact-SQL)
- CRIAR PRIORIDADE DE CORRETOR (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