Server 2008 issue executando o arquivo em lote

1

Para a vida de mim, parece que não consigo obter um arquivo de lote em execução no Agendador de Tarefas do Server 2008, apesar de não ter os problemas comuns que vi antes.

Problema até agora :

  • Eu tenho um arquivo em lote que faz um backup de hotcopy de alguns repositórios e os ZIPs. Eu posso executar isso manualmente.
  • Eu criei uma tarefa no agendador de tarefas para chamar o arquivo em lote (sem aspas, sem argumentos da linha de comando).
  • Não importa qual, a tarefa retorna com o código 0x1 (que, acredito, tem algo a ver com permissões).

Resolução de problemas até agora :

  • Executou a tarefa manualmente. Funciona perfeitamente.
  • Verifiquei se eu não tinha aspas nos argumentos devido ao Erro de hotfix do 2008 Server descrito anteriormente no ServerFault . Não tenho apenas argumentos citados, mas não argumentos.
  • Saída redirecionada para um arquivo de log para ver se estava em execução. Não é.
  • Alterou o usuário da conta do Serviço do Sistema para a conta de Administrador local para fins de teste. A conta de administrador tem todos os direitos necessários & privilégios e está atualmente conectado ao tentar executar a tarefa manualmente.
  • Criou outro arquivo de lote que não faz nada além de chamar o outro arquivo de lote para ver se de alguma forma foi talvez um comando no arquivo de lote inicialmente chamado. Isso ainda falha, mas funciona novamente se for executado manualmente.

Estou em um beco sem saída. Qualquer novo pensamento que poderia iniciar o processo de solução de problemas? Obrigado!

Editar 1 : Para esclarecer, devo observar que estou verificando "executar tarefa se o usuário está conectado ou não", mas não me lembro se foi configurado dessa forma inicialmente.

    
por SeanKilleen 03.08.2011 / 21:14

2 respostas

1

Eu tenho o mesmo problema. Isso é o que eu verifiquei. Qual é o nome do seu arquivo de lote? Poderia ser um. Tente renomear para .cmd O agente do SQL Server está executando o trabalho. A conta de serviço para esse serviço tem direitos? Você usa uma declaração de chamada ou apenas escreve o nome do batchfile? Eu acho que você não precisa de uma declaração de chamada (você mencionou isso). É o dono do trabalho sa. Isso é normal hoje. Você tem algum comando net use ou copia del etc que precisa de / Q / Y ou outras declarações? O trabalho não pode responder a quaisquer perguntas, como existem arquivos abertos, você tem certeza etc. Existe um firewall do windows envolvido? Minha pegadinha foi: Eu tentei fazer mais de uma coisa no trabalho. Não faça Renomeie uma coisa com um emprego. Renomeie outra coisa com outro trabalho. Não faça mais do que uma coisa em cada trabalho. Parece idiota eu sei, mas você deve fazer isso de qualquer maneira para fins de solução de problemas. A maneira mais fácil de testar algo é net use z: \ server \ share e veja o que você obtém no visualizador de eventos e no registro do histórico de tarefas. Mantê-lo simples, em seguida, digite um comando real. Lamento muito que não funcione como antes, quando era top de linha.

    
por 25.01.2013 / 17:03
1

Resolva sua tarefa executando o mesmo usuário para o qual sua tarefa está configurada. Por exemplo, se você estiver logado como JoeUser, mas sua tarefa estiver sendo executada como administrador local, você precisará de runas /user:administrator cmd e executar seu lote a partir daí. Pode haver alguma diferença no caminho, variáveis de ambiente ou permissões que estão causando problemas.

Além disso, o código de retorno de 0x1 de um programa em lote está apenas refletindo o código de retorno do último comando emitido no programa em lote antes de ser finalizado. Para alguns programas, 0x1 é um erro. Para outros, é apenas um código de retorno - verifique a documentação do comando específico. Você pode inserir um echo %ERRORLEVEL% após comandos em seu arquivo em lote para rastrear o progresso e ajudá-lo a reduzi-lo. Depois de saber qual comando está retornando o 1, você pode verificar a documentação desse comando para ver como resolvê-lo.

Uma vez que você o execute corretamente em uma janela CMD executando como o mesmo usuário que pretende agendá-lo como , então você pode passar a executá-lo como uma tarefa agendada.

Talvez você possa esclarecer qual é a natureza do programa em lote para nos ajudar a responder por que ele não funciona como uma tarefa.

    
por 27.03.2015 / 05:44