I like to run this against a server group in SSMS to check multiple servers at once.
SELECT job.Name,
job.job_ID,
job.Originating_Server,
activity.run_requested_Date,
DATEDIFF(MINUTE, activity.run_requested_Date, GETDATE()) AS ElapsedMinutes,
activity.last_executed_step_date,
activity.last_executed_step_id
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
GO
Here is what I use to prevent one job from trying to restart another job.
EXEC msdb.dbo.sp_help_job @execution_status = 1, @job_aspect = 'JOB', @job_name = 'DBA - Daily Database Maintenance' IF (@@ROWCOUNT = 0) PRINT 'Start job' ELSE PRINT 'Job already running ... Nothing to do'
