- BEGIN
- DECLARE @jobstatus
- TABLE(Job_ID uniqueidentifier, Last_Run_Date int, Last_Run_Time int, Next_Run_Date int,
- Next_Run_Time int,Next_Run_Schedule_ID int, Requested_To_Run int,
- Request_Source int, Request_Source_ID varchar(100),
- Running int, Current_Step int, Current_Retry_Attempt int, State int)
- INSERT INTO @jobstatus
- EXEC MASTER.dbo.xp_sqlagent_enum_jobs 1,garbage
- BEGIN
- SELECT DISTINCT CASE
- WHEN state=1 THEN 'Job is Executing'
- WHEN state=2 THEN 'Waiting for thread to complete'
- WHEN state=3 THEN 'Between retries'
- WHEN state=4 THEN 'Job is Idle'
- WHEN state=5 THEN 'Job is suspended'
- WHEN state=7 THEN 'Performing completion actions'
- END AS State,sj.name,
- CASE WHEN ej.running=1 THEN st.step_id ELSE 0 END AS currentstepid,
- CASE WHEN ej.running=1 THEN st.step_name ELSE 'not executing' END AS currentstepname,
- st.command, ej.request_source_id
- FROM @jobstatus ej join msdb..sysjobs sj ON sj.job_id=ej.job_id
- JOIN msdb..sysjobsteps st ON st.job_id=ej.job_id AND (st.step_id=ej.current_step or ej.current_step=0)
- WHERE ej.running+1>1
- END
- END
- --该片段来自于http://www.codesnippet.cn/detail/200220132139.html
来源: http://www.codesnippet.cn/detail/200220132139.html