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 descreve o contexto de execução de um procedimento armazenado iniciado pela ativação interna.
contexto de segurança
Uma fila configurada para ativação também deve especificar o usuário que o procedimento armazenado de ativação executa. O SQL Server representa esse usuário antes de iniciar o procedimento armazenado.
Quando o procedimento armazenado também especifica uma EXECUTE AS cláusula, ocorrem duas representações. O SQL Server primeiro representa o usuário especificado para a fila e executa o procedimento armazenado. Quando o procedimento armazenado é executado, o procedimento representa o usuário especificado na EXECUTE AS cláusula do procedimento.
O usuário especificado para uma associação de serviço remoto geralmente é um usuário diferente do usuário especificado para ativação. As permissões requeridas para cada usuário também diferem. O usuário da associação de serviço remoto não precisa de permissão para ler a fila ou executar procedimentos armazenados no banco de dados, enquanto o usuário especificado para ativação não precisa de permissão para enviar mensagens para o serviço. Para obter mais informações sobre permissões de usuário, consulte Identidade e controle de acesso (Service Broker) e segurança de caixa de diálogo do Service Broker.
Configurações da sessão
O Service Broker executa programas de serviço ativados internamente em uma sessão em segundo plano distinto da conexão que criou a mensagem. As opções definidas para essa sessão são as opções padrão para o banco de dados.
Em uma sessão iniciada pelo Service Broker, o SQL Server grava a saída e PRINT as instruções no log de RAISERROR erros do SQL Server. O Service Broker não fornece parâmetros para um procedimento armazenado ativado. O Service Broker não considera os valores retornados de um procedimento armazenado ativado e não processa conjuntos de resultados de um procedimento armazenado ativado.
Contexto de transação
Um procedimento armazenado ativado é responsável pelo gerenciamento de transações. O SQL Server não inicia uma transação antes de ativar o procedimento armazenado e o procedimento armazenado é executado em um contexto de transação diferente da operação interna que ativa o procedimento. Para obter uma discussão sobre como gerenciar transações em procedimentos armazenados ativados, consulte Mensagens transacionais.
detecção de falhas
Um procedimento armazenado ativo deve receber mensagens da fila que ativou o procedimento. Se o procedimento armazenado for encerrado sem receber mensagens ou o monitor da fila detectar que o procedimento armazenado não está recebendo mensagens após um curto período de tempo limite, o monitor da fila considerará que o procedimento armazenado falhou. Nesse caso, o monitor da fila deixará de ativar o procedimento armazenado.
Monitorar
Para verificar o usuário que está executando o procedimento de ativação, você pode usar Eventos Estendidos (o evento broker_activation, com as ações username e server_principal_name) ou a visão de gerenciamento dinâmico sys.dm_broker_activated_tasks, que retorna o banco de dados configurado na fila.