sql >> Database >  >> RDS >> Sqlserver

SQL Agent-taak:bepalen hoe lang deze al actief is

Deze oplossing zou werken:

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
)

Dit is een meer algemene controle die afhankelijk is van systeemtabellen. Als u de voorkeur geeft aan een aangepaste route, kunt u de taak in plaats daarvan laten invoegen in een taaklogboektabel die u heeft gemaakt.



  1. virtualenv die verplaatste bibliotheken kan vinden (zoals mysqlclient lib voor MySQLdb)

  2. MySQL versus JSON - Waarom?

  3. Verschil tussen TRIM() en TRIM_ORACLE() in MariaDB

  4. Oracle:hoe INSERT als een rij niet bestaat