none
JOB para execução de procedures que usa Linked Server RRS feed

  • Pergunta

  • Bom dia Pessoal.

    Criei um JOB para executar uma stored procedure. Essa SP utiliza um linked server para fazer updates em um banco remoto. 
    Quando executo o JOB dá o seguinte erro:

    The job failed.  The Job was invoked by User usersinteg.  The last step to run was step 1 (SINTEG-PRJ01).

    linked server só funciona para o usuário usersinteg, que é o owner do meu banco de dados, se eu logar como sa eu não consigo dar um select através desse linked server.

    Se eu entro no Query Analyser com o usersinteg e rodo a procedure (exec procedure param) exatamente como no JOB, funciona normalmente.

    Tenho algumas dúvidas:

    1. O JOB tem que ser criado como SA ou pode ser criado com meu usuário usersinteg?
    2. Se puder criar com meu usuário, ele tem que ser um SA pra rodar o JOB? (pergunta idiota eu sei, mas na dúvida né)
    3. Como uso linked server, pode incluenciar na execução do JOB?

    Agradeço desde já a atenção!

    Abraço.

    • Movido Gustavo Maia Aguiar quarta-feira, 18 de novembro de 2009 17:19 (De:Programação avançada com o SQL Server)
    segunda-feira, 16 de novembro de 2009 14:21

Respostas

  • Olá Zeck,

    Existe um workaround para esse problema: http://support.microsoft.com/default.aspx/kb/811031

    A idéia é chamar a procedure via CmdExec (No Job), executar com o comando OSQL autenticando com o usuário usado no linked server.


    No SQL Server 2005 podemos usar o EXECUTE AS LOGIN, que modifica o contexto de execução.



    Abraço!!

    Classifiquem as respostas. O Fórum agradece!!
    • Marcado como Resposta Zeck Supernova segunda-feira, 10 de dezembro de 2012 14:40
    segunda-feira, 16 de novembro de 2009 16:16
  • Zeck,

    Funciona sim, mas para isso você terá que utilizar um usuário do Windows, fazendo conexão através de Windows Authentication.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    • Marcado como Resposta Zeck Supernova segunda-feira, 10 de dezembro de 2012 14:40
    segunda-feira, 16 de novembro de 2009 18:24
    Moderador

Todas as Respostas

  • Olá Zeck,

    Existe um workaround para esse problema: http://support.microsoft.com/default.aspx/kb/811031

    A idéia é chamar a procedure via CmdExec (No Job), executar com o comando OSQL autenticando com o usuário usado no linked server.


    No SQL Server 2005 podemos usar o EXECUTE AS LOGIN, que modifica o contexto de execução.



    Abraço!!

    Classifiquem as respostas. O Fórum agradece!!
    • Marcado como Resposta Zeck Supernova segunda-feira, 10 de dezembro de 2012 14:40
    segunda-feira, 16 de novembro de 2009 16:16
  • Boa tarde Alexandre.

    Valeu pela dica, testei o primeiro método do Workaround, mas mesmo assim não deu certo.

    Cara, sabe me dizer se o método dois funciona para SQL Server 2000?
    segunda-feira, 16 de novembro de 2009 17:49
  • Olá Zeck,

    Pelo que pude ver no código, o segundo deve funcionar. Não tenho um SQL 2000 aqui para testar na prática, então, se puder testar e retornar o resultado, agradecemos!

    Abraço!!!

    Classifiquem as respostas. O Fórum agradece!!
    segunda-feira, 16 de novembro de 2009 18:05
  • Zeck,

    Funciona sim, mas para isso você terá que utilizar um usuário do Windows, fazendo conexão através de Windows Authentication.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    • Marcado como Resposta Zeck Supernova segunda-feira, 10 de dezembro de 2012 14:40
    segunda-feira, 16 de novembro de 2009 18:24
    Moderador