segunda-feira, 21 de outubro de 2013

Job concluído com sucesso mas mostrando In Progress no status

Eu tinha um job no SQL Server que executava um arquivo .BAT era executado / concluído com sucesso. Porém, na tabela sysjobhistory o status do step que fazia o FTP via um arquivo .BAT, ficava com status IN PROGRESS.

Não encontrei nada na internet, apenas este caso igual ao meu, mas nenhuma solução real.

http://itknowledgeexchange.techtarget.com/itanswers/the-ssis-2008-r2-job-does-not-complete-execution/

O step do meu job era do tipo Operating System (cmdExec).
E o comando era "C:\Interface\FTP_Download.bat"

Solução

Para resolver, alterei o tipo do step para o tipo Transac-SQL script (script SQL puro), e fiz o código executar o arquivo .BAT via xp_cmdshell, controlando o erro através de uma variável inteira.


DECLARE @SQL                    varchar(500)
DECLARE @Retorno                int
SET @SQL = 'C:\Interface\FTP_Download.bat'

EXEC @Retorno = MASTER..xp_cmdshelL @SQL

--Se executou com sucesso
IF (@Retorno = 0)
    PRINT 'Download via FTP concluído com sucesso'
ELSE
BEGIN
    --Se execução NÃO foi concluída com sucesso, força o erro para que o job seja concluído com erro.
    RAISERROR('Erro ao fazer download via FTP. Verifique o log do FTP',16,1)
END



Resolvido! O job não ficou mais no status IN PROGRESS
.

____________________________________________
Completed job showing In Progress Status
____________________________________________