sql >> Base de Datos >  >> RDS >> Sqlserver

Trabajo del Agente SQL:determine cuánto tiempo ha estado ejecutándose

Esta solución funcionaría:

SELECT DATEDIFF(SECOND,aj.start_execution_date,GetDate()) AS Seconds
FROM msdb..sysjobactivity aj
JOIN msdb..sysjobs sj on sj.job_id = aj.job_id
WHERE aj.stop_execution_date IS NULL -- job hasn't stopped running
AND aj.start_execution_date IS NOT NULL -- job is currently running
AND sj.name = 'JobX'
and not exists( -- make sure this is the most recent run
    select 1
    from msdb..sysjobactivity new
    where new.job_id = aj.job_id
    and new.start_execution_date > aj.start_execution_date
)

Esta es una verificación más general que depende de las tablas del sistema. Si prefiere una ruta personalizada, puede hacer que el trabajo se inserte en una tabla de registro de trabajos que haya creado.