Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie kann ich den Status eines Auftrags ermitteln?

Ich möchte darauf hinweisen, dass keines der T-SQL-Elemente auf dieser Seite genau deshalb funktionieren wird, weil keines von ihnen den syssessions beitritt Tabelle, um nur die aktuelle Sitzung zu erhalten, und könnte daher falsch positive Ergebnisse enthalten.

Siehe dies als Referenz:Was bedeutet es, Jobs mit einem Null-Enddatum zu haben?

Sie können dies auch überprüfen, indem Sie die sp_help_jobactivity analysieren Prozedur in msdb .

Mir ist klar, dass dies eine alte Nachricht auf SO ist, aber ich fand diese Nachricht aufgrund des Problems nur teilweise hilfreich.

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