Partilhar via


Contexto de ativação interna

Este tópico descreve o contexto de execução para um procedimento armazenado que é 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 cláusula EXECUTE AS, ocorrem duas representações. O SQL Server representa primeiramente 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 cláusula EXECUTE AS do procedimento.

Note que 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 as permissões do usuário, consulte Controle de identidade e acesso (Service Broker) e Segurança 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.

Dentro de uma sessão iniciada pelo Service Broker, o SQL Server grava a saída de instruções PRINT e RAISERROR no log de erros do SQL Server. O Service Broker não fornece parâmetros para um procedimento armazenado ativo. O Service Broker não considera valores de retorno de um procedimento armazenado ativo e não processa conjuntos de resultados de um procedimento armazenado ativo.

Contexto de transação

Um procedimento armazenado ativo é responsável pelas transações de gerenciamento. 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 descrição de como gerenciar transações em procedimentos armazenados ativos, consulte Mensagens transacionais.

Detecção de falha

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 tempo limite curto, o monitor da fila considerará que o procedimento armazenado falhou. Nesse caso, o monitor da fila deixará de ativar o procedimento armazenado.