Como executo um arquivo em lotes de um trabalho agendado via SQL Server Agent

12

Estou tentando executar um arquivo em lotes (Windows) de dentro de um trabalho de agente do SQL Server no SQL Server 2008 R2. Nas etapas da tarefa, criei uma nova etapa, defina seu tipo como "Sistema operacional (CmdExec)". Inicialmente, tentei colocar apenas o nome do arquivo em lotes no campo "Comando". Dá um erro que não consegue encontrar o arquivo.

Então tentei: cmd.exe c: \ test.bat

Isso inicia, mas nunca é concluído (e não parece que esteja realmente funcionando de qualquer maneira).

Tentei agrupar o nome do arquivo em lotes entre aspas: cmd.exe "C: \ test.bat", mas isso também não faz nenhuma diferença.

Qual é a combinação mágica para fazer isso funcionar?

Paul Mrozowski
fonte
Você estava usando o caminho completo quando recebeu o erro "arquivo não encontrado"? O caminho é válido no servidor em execução, não apenas na sua estação de trabalho? Os caminhos no arquivo em lotes são absolutos?
Jon of All Trades
Sim, estou usando o caminho completo. É o caminho correto no servidor que está executando. O arquivo de lote é nada mais do que um teste simples: echo> C: \ temp \ itworks.txt
Paul Mrozowski

Respostas:

11

Se a memória me servir corretamente:

cmd.exe /c "c:\test.bat"

As cotações são necessárias se houver espaços no caminho ou no nome do arquivo

SqlACID
fonte
1

Verifique também as permissões usadas para o Serviço do Agente de Tarefas. Pode ser que o usuário que está executando o serviço não tenha permissão para ver o arquivo.

Boa sorte

Dan OBrien
fonte
0

Verifique se você tem permissões para executar o arquivo em lotes no local da unidade e pasta.

Não se esqueça de que quando você o executa manualmente, suas credenciais são usadas, mas quando é executado automaticamente pelo SQL Agent, as credenciais e as permissões do agente são usadas.

Phill H
fonte
0

"c:\test.bat"vai fazer o trabalho

Ronald Tims
fonte
1
Olá, Bem-vindo ao site. Embora sua resposta possa ser útil, geralmente é melhor incluir mais detalhes sobre por que isso funcionaria enquanto o comando na pergunta não.
Tom V - tentativa topanswers.xyz