查看JOB状态

来源:互联网 发布:thinkphp源码 编辑:程序博客网 时间:2024/06/05 19:00

 

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

SELECT * FROM  @jobstatus