Etapa da tarefa SQL executada como conta sql diferente

11

Estou curioso para saber como configurar uma etapa do trabalho SQL para ser executada como uma conta de logon SQL diferente. Parece que preciso configurar uma nova conta proxy que exija uma credencial existente. Quando crio uma credencial, minha única opção é usar uma credencial de logon do Windows.

O trabalho que estou tentando executar está abaixo. Existem outras instruções adicionais, mas quando defino a etapa do trabalho para ser executada como o logon do SQL, ela falha.

insert into [dbo].[TableA]
SELECT 
       ss.[Ref_ID]
      ,mm.[studentID]
      ,mm.[studentPersonID]
      ,mm.[studentFirstname]
  FROM [dbo].[TableB] mm
  left outer join [dbo].[TableC] ss on ss.parentPersonID=mm.parentPersonID and mm.studentPersonID = ss.studentPersonID
  where ss.Ref_ID is not null;

Quando isso é executado através de uma etapa da tarefa SQL, ele falha.

Executed as user: an_admin_account. Access to the remote server is denied because the current security context is not trusted. [SQLSTATE 42000] (Error 15274).  The step failed.

Não sei ao certo por que ele está tentando acessar um servidor remoto quando todas essas tabelas existem no banco de dados local.

Geoff Dawdy
fonte
Uma etapa da tarefa SQL já possui uma conexão com a instância SQL. Portanto, você precisa alterar o contexto de segurança existente, em vez de fazer uma nova conexão com uma senha. Se você deseja criar uma nova conexão, poderá usar um comando sqlcmd ou o script do PowerShell, que poderá usar um logon e uma senha SQL como parâmetros no script. Mas você deve considerar o que precisa fazer e se um processo armazenado com seu próprio contexto será suficiente.
Rob Farley

Respostas:

15

Se você estiver configurando uma etapa do trabalho T-SQL, vá para a Página Avançada e configure "Executar como usuário" para o logon de sua escolha. insira a descrição da imagem aqui

Se você estiver trabalhando com outros tipos de etapas de trabalho, como o PowerShell, será necessário configurar uma conta proxy.


fonte
Eu tentei isso, mas agora o trabalho falha ao dizer "O acesso ao servidor remoto foi negado porque o contexto de segurança atual não é confiável". No entanto, se eu executar o script enquanto estiver conectado como usuário, ele poderá executá-lo perfeitamente. Não há um servidor vinculado na consulta, então não entendo por que ele está se referindo a um servidor remoto. Alguma ideia?
Geoff Dawdy
Se você pudesse adicionar à sua pergunta o que o trabalho está tentando fazer e o erro exato nos ajudaria a apontar uma solução.
No meu caso, ignorou a configuração. Usando SQL 2012.
Miguel Sv
1

Use EXECUTE ASno início ou crie um procedimento armazenado que seja executado em um contexto específico.

Rob Farley
fonte
Isso pode ser ruim. Se você deseja chamar um procedimento armazenado com um usuário restrito, ele pode reverter para privilégios de administrador de sistema (ou proprietário da tarefa). A solução alternativa seria usar um cookie.
Jens W.
Um procedimento armazenado que foi criado usando a opção EXECUTE AS manipulará a escalação de privilégios e não permitirá que alguém mude parcialmente. Se não houver nenhum proc armazenado disponível, a representação de um login diferente fará o truque, como EXECUTE AS no início do script.
Rob Farley