Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Managed Instance
Os procedimentos armazenados ativados são executados em uma sessão em segundo plano. Portanto, as técnicas para solucionar problemas de um procedimento armazenado de ativação diferem ligeiramente daquelas usadas para solucionar problemas de procedimentos armazenados que fazem parte de uma sessão interativa.
Técnica: Analisar a configuração do Service Broker
Se os procedimentos armazenados ativados não forem executados com êxito, use o utilitário ssbdiagnose para procurar erros de configuração nos serviços associados. Para obter mais informações, consulte utilitário ssbdiagnose (Service Broker).
Técnica: Ver a saída do procedimento armazenado de ativação
Se o procedimento armazenado ativado produzir resultados incorretos ou não ler da fila, verifique se há erros e mensagens no log de erros do SQL Server que ajudem a localizar o problema. Os procedimentos armazenados ativados não estão associados a nenhum aplicativo. As informações normalmente retornadas ao aplicativo de chamada são colocadas no log de erros do SQL Server. Isso inclui erros, mensagens e a saída de declarações PRINT e RAISERROR.
Técnica: Executar o procedimento armazenado a partir de uma sessão interativa
Para solucionar problemas de um procedimento armazenado de ativação, você pode desativar a ativação na fila e executar o procedimento armazenado no SQL Server Management Studio ou no utilitário sqlcmd . Se você executar o procedimento armazenado a partir de uma sessão interativa, poderá ver todos os erros retornados pelo procedimento armazenado.
No entanto, você poderá ver resultados diferentes se o contexto de segurança e as configurações do banco de dados forem diferentes na sessão interativa do que quando o procedimento armazenado for ativado pelo Mecanismo de Banco de Dados. Antes de executar o procedimento, faça o seguinte:
Use
EXECUTE ASpara definir o utilizador da sessão interativa como o especificado para a ativação.Defina as opções para a sessão de acordo com os padrões do banco de dados.
Para obter mais informações, consulte Contexto de ativação interna.
Sintoma: Os procedimentos armazenados de ativação não são executados
A seguir estão as causas comuns deste sintoma:
As configurações da fila podem ter sido alteradas. Use a exibição de
sys.service_queuescatálogo para confirmar as configurações da fila. Verifique se a ativação para a fila está habilitada, se a fila especifica o procedimento armazenado correto e se a fila especifica a entidade de segurança correta. Confirme se a entidade de segurança tem permissões Executar no procedimento armazenado.O procedimento armazenado pode não ser iniciado ou pode sair imediatamente após ser iniciado. Nesse caso, verifique se há erros do procedimento armazenado no log de erros do SQL Server. Você também pode executar o procedimento armazenado do SQL Server Management Studio e verificar os resultados.
Sintoma: As mensagens permanecem na fila
Verifique se os procedimentos armazenados de ativação foram iniciados corretamente:
Verifique a vista
sys.dm_broker_queue_monitorsde gestão dinâmica para garantir que um monitor de fila esteja ativo para a fila. Caso contrário, use a instruçãoALTER QUEUEpara ativarON.O estado do monitor da fila deve ser
RECEIVES_OCCURRING. Se o monitor de fila não estiver nesse estado, verifique a exibiçãosys.dm_broker_activated_tasksde gerenciamento dinâmico para garantir que as tarefas ativadas para a fila estejam em execução no momento. Se não houver tarefas ativadas, a ativação está falhando. Para obter mais informações, consulte a seção "Sintoma: procedimentos armazenados de ativação não são executados" anteriormente neste tópico.
Se as tarefas ativadas estiverem em execução, mas as mensagens permanecerem na fila, é provável que a tarefa ou falhe ao RECEIVE ou ao confirmar transações. Verifique se há erros do procedimento armazenado no log de erros do SQL Server. Interromper a ativação e executar o procedimento armazenado manualmente pode ajudar a solucionar o problema.