Compartilhar via


Contexto de ativação interna

Aplica-se a:SQL ServerInstâ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.