sql >> Databasteknik >  >> RDS >> Sqlserver

Hur kan jag fastställa status för ett jobb?

Jag skulle vilja påpeka att ingen av T-SQL på denna sida kommer att fungera just för att ingen av dem går med i syssessionerna tabell för att bara få den aktuella sessionen och kan därför inkludera falska positiva resultat.

Se detta för referens:Vad innebär det att ha jobb med ett null-stoppdatum?

Du kan också validera detta genom att analysera sp_help_jobactivity procedur i msdb .

Jag inser att detta är ett gammalt meddelande på SO, men jag tyckte att det här meddelandet bara var delvis till hjälp på grund av problemet.

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


  1. MySQL-sats för att välja den senaste posten i en specifik kolumn

  2. Jämför värden för tidsstämplar och tilldela ett värde till var och en av dem om de har ändrats

  3. Släpp tabell från Oracle-databasen om tabell finns i sql-satsen

  4. databasen uppdateras inte