Nesta pergunta: https://stackoverflow.com/questions/18445825/how-to-know-status-of-currently-running-jobs
Esta resposta foi proposta:
SELECT sj.name
, sja.*
FROM msdb.dbo.sysjobactivity AS sja
INNER JOIN msdb.dbo.sysjobs AS sj ON sja.job_id = sj.job_id
WHERE sja.start_execution_date IS NOT NULL
AND sja.stop_execution_date IS NULL
No entanto, para um dos meus servidores, há uma entrada que data de 10 meses atrás. Procurar no SQL Agent Job Activity Monitor mostra que não há trabalhos em execução. Olhando em msdb..sysjobs mostra apenas 3 trabalhos. Alguém pode explicar esse fenômeno?
A linha órfã tem NULLs para queued_date, stop_execution_date, job_history_id e next_scheduled_date. Resto dos valores parecem razoáveis.
Uma resposta do StackOverflow tem uma possível explicação:
https://stackoverflow.com/questions/13037668/what-does-it-mean-to-have-jobs-with-a-null-stop-date/13038752#13038752
Citar:
Eu tive um problema semelhante em que duas entradas em sysjobactivity pareciam estar "travadas", com um start_execution_date de seis semanas atrás e nenhum stop_execution_date. Seguindo a sugestão da citação acima, verifiquei o session_id para cada um desses registros travados e descobri que, em cada caso, os registros travados eram de sessões anteriores.
A seguinte resposta do StackOverflow mostra como obter apenas a atividade da sessão atual:
https://stackoverflow.com/a/18062236/216440
O código deles:
Quem sabe! Basta adicionar algo como
Esta é a minha resposta atual no meu ambiente. Isso funciona para mim, pois o script maior do qual faz parte é executado diariamente. Parece que uma resposta ou explicação melhor deveria estar disponível.