Contexto de ativação interna

Aplica-se a:SQL ServerAzure SQL Managed Instance

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 como o qual o procedimento armazenado de ativação é executado. O SQL Server assume a identidade desse 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 imita o utilizador especificado para a fila de espera 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 ligação de serviço remoto é geralmente um usuário diferente do usuário especificado para ativação. As permissões necessárias para cada usuário também diferem. O usuário de vinculação de serviço remoto não precisa de permissão para ler da 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 Segurança da caixa de diálogo Controle de identidade e acesso (Service Broker) e Service Broker.

Configurações da sessão

O Service Broker executa programas de serviço ativados internamente em uma sessão em segundo plano distinta da conexão que criou a mensagem. As opções definidas para esta 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 de instruções e PRINT no log de erros do RAISERROR SQL Server. O Service Broker não fornece parâmetros para um procedimento armazenado ativado. O Service Broker não considera valores de retorno de um procedimento armazenado ativado e não processa conjuntos de resultados de um procedimento armazenado ativado.

Contexto da transação

Um procedimento armazenado ativado é responsável por gerenciar 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 o gerenciamento de transações em procedimentos armazenados ativados, consulte Mensagens transacionais.

Deteção de falhas

Um procedimento armazenado ativado deve receber mensagens da fila que ativou o procedimento. Se o procedimento armazenado sair sem receber mensagens ou se o monitor de fila detetar que o procedimento armazenado não está recebendo mensagens após um curto tempo limite, o monitor de fila considerará que o procedimento armazenado falhou. Nesse caso, o monitor de fila para de ativar o procedimento armazenado.

Ecrã

Para verificar o usuário que está executando o procedimento de ativação, pode-se usar Eventos Estendidos (o broker_activation evento, com username e server_principal_name ações), ou a visão de gerenciamento dinâmico sys.dm_broker_activated_tasks, que retorna o banco de dados principal_id configurado na fila.