Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment puis-je déterminer le statut d'une tâche ?

Je tiens à souligner qu'aucun des T-SQL de cette page ne fonctionnera précisément car aucun d'entre eux ne se joint aux syssessions table pour obtenir uniquement la session en cours et peut donc inclure des faux positifs.

Voir ceci pour référence :Qu'est-ce que cela signifie d'avoir des travaux avec une date d'arrêt nulle ?

Vous pouvez également valider cela en analysant le sp_help_jobactivity procédure dans msdb .

Je me rends compte qu'il s'agit d'un ancien message sur SO, mais je n'ai trouvé ce message que partiellement utile à cause du problème.

SELECT
    job.name, 
    job.job_id, 
    job.originating_server, 
    activity.run_requested_date, 
    DATEDIFF( SECOND, activity.run_requested_date, GETDATE() ) as Elapsed
FROM 
    msdb.dbo.sysjobs_view job
JOIN
    msdb.dbo.sysjobactivity activity
ON 
    job.job_id = activity.job_id
JOIN
    msdb.dbo.syssessions sess
ON
    sess.session_id = activity.session_id
JOIN
(
    SELECT
        MAX( agent_start_date ) AS max_agent_start_date
    FROM
        msdb.dbo.syssessions
) sess_max
ON
    sess.agent_start_date = sess_max.max_agent_start_date
WHERE 
    run_requested_date IS NOT NULL AND stop_execution_date IS NULL