Quick overview of all SQL Agent jobs. You can check how many SQL Agent jobs you have created and their basic information. Returns jobs schedule information and status. Something similar happening when you are checking jobs using Management Studio section called Job Activity Monitor. Nothing special happening during its execution even if it looks really long.
Job Activity Monitor window
-- declare variables used DECLARE @FILTER VARCHAR(1024) = '%' -- filtering rule there DECLARE @JOB_ID VARCHAR(200) DECLARE @SCHED_ID VARCHAR(200) DECLARE @FREQ_TYPE INT DECLARE @FREQ_INTERVAL INT DECLARE @FREQ_SUBDAY_TYPE INT DECLARE @FREQ_SUBDAY_INTERVAL INT DECLARE @FREQ_RELATIVE_INTERVAL INT DECLARE @FREQ_RECURRENCE_FACTOR INT DECLARE @ACTIVE_START_DATE INT DECLARE @SCHEDULE VARCHAR(1000) DECLARE @SCHEDULE_DAY VARCHAR(200) DECLARE @START_TIME VARCHAR(10) DECLARE @END_TIME VARCHAR(10) -- create temporary table for manipulating with data IF OBJECT_ID('tempdb..#Schedules') IS NOT NULL DROP TABLE #Schedules CREATE TABLE #Schedules ( JOB_ID VARCHAR(200) ,SCHED_ID VARCHAR(200) ,JOB_NAME SYSNAME ,[STATUS] INT ,SCHEDULED INT NULL ,schedule VARCHAR(1000) NULL ,FREQ_TYPE INT NULL ,FREQ_INTERVAL INT NULL ,FREQ_SUBDAY_TYPE INT NULL ,FREQ_SUBDAY_INTERVAL INT NULL ,FREQ_RELATIVE_INTERVAL INT NULL ,FREQ_RECURRENCE_FACTOR INT NULL ,ACTIVE_START_DATE INT NULL ,ACTIVE_END_DATE INT NULL ,ACTIVE_START_TIME INT NULL ,ACTIVE_END_TIME INT NULL ,DATE_CREATED DATETIME NULL ) -- inert data into temporary table INSERT INTO #Schedules ( job_id ,sched_id ,job_name ,[status] ,scheduled ,schedule ,freq_type ,freq_interval ,freq_subday_type ,freq_subday_interval ,freq_relative_interval ,freq_recurrence_factor ,active_start_date ,active_end_date ,active_start_time ,active_end_time ,date_created ) SELECT j.job_id ,sched.schedule_id ,j.name ,j.enabled ,sched.enabled ,NULL ,sched.freq_type ,sched.freq_interval ,sched.freq_subday_type ,sched.freq_subday_interval ,sched.freq_relative_interval ,sched.freq_recurrence_factor ,sched.active_start_date ,sched.active_end_date ,sched.active_start_time ,sched.active_end_time ,j.date_created FROM sysjobs j INNER JOIN sysjobschedules s ON j.job_id = s.job_id INNER JOIN dbo.sysschedules sched ON s.schedule_id = sched.schedule_id WHERE j.enabled = 1 AND sched.enabled = 1 AND j.name LIKE @FILTER -- iterate through data WHILE 1 = 1 BEGIN SET @SCHEDULE = '' IF ( SELECT COUNT(*) FROM #Schedules WHERE scheduled = 1 AND schedule IS NULL ) = 0 BREAK ELSE BEGIN SELECT @job_id = job_id ,@sched_id = sched_id ,@freq_type = freq_type ,@Freq_Interval = freq_interval ,@freq_subday_type = freq_subday_type ,@freq_subday_interval = freq_subday_interval ,@freq_relative_interval = freq_relative_interval ,@freq_recurrence_factor = freq_recurrence_factor ,@active_start_date = active_start_date ,@start_time = CASE WHEN LEFT(active_start_time, 2) IN (22, 23) AND LEN(active_start_time) = 6 THEN CONVERT(VARCHAR(2), left(active_start_time, 2) - 12) + ':' + SUBSTRING(CAST(active_start_time AS CHAR), 3, 2) + ' P.M' WHEN LEFT(active_start_time, 2) = (12) AND LEN(active_start_time) = 6 THEN CAST(LEFT(active_start_time, 2) AS CHAR(2)) + ':' + SUBSTRING(CAST(active_start_time AS CHAR), 3, 2) + ' P.M.' WHEN LEFT(active_start_time, 2) BETWEEN 13 AND 24 AND LEN(active_start_time) = 6 THEN CONVERT(VARCHAR(2), left(active_start_time, 2) - 12) + ':' + SUBSTRING(CAST(active_start_time AS CHAR), 3, 2) + ' P.M.' WHEN LEFT(active_start_time, 2) IN (10, 11) AND LEN(active_start_time) = 6 THEN CAST(LEFT(active_start_time, 2) AS CHAR(2)) + ':' + SUBSTRING(CAST(active_start_time AS CHAR), 3, 2) + ' A.M.' WHEN active_start_time = 0 THEN '12:00 A.M.' WHEN LEN(active_start_time) = 4 THEN '12:' + CONVERT(VARCHAR(2), left(active_start_time, 2)) + ' A.M.' WHEN LEN(active_start_time) = 3 THEN '12:0' + CONVERT(VARCHAR(2), left(active_start_time, 1)) + ' A.M.' WHEN LEN(active_start_time) = 2 THEN '12:00:' + CONVERT(VARCHAR(2), left(active_start_time, 2)) + ' A.M.' WHEN LEN(active_start_time) = 1 THEN '12:00:0' + CONVERT(VARCHAR(2), left(active_start_time, 2)) + ' A.M.' ELSE CAST(LEFT(active_start_time, 1) AS CHAR(1)) + ':' + SUBSTRING(CAST(active_start_time AS CHAR), 2, 2) + ' A.M.' END ,@END_TIME = CASE WHEN LEFT(active_end_time, 2) IN (22, 23) AND LEN(active_end_time) = 6 THEN CONVERT(VARCHAR(2), left(active_end_time, 2) - 12) + ':' + SUBSTRING(CAST(active_end_time AS CHAR), 3, 2) + ' P.M' WHEN LEFT(active_end_time, 2) = (12) AND LEN(active_end_time) = 6 THEN CAST(LEFT(active_end_time, 2) AS CHAR(2)) + ':' + SUBSTRING(CAST(active_end_time AS CHAR), 3, 2) + ' P.M.' WHEN LEFT(active_end_time, 2) BETWEEN 13 AND 24 AND LEN(active_end_time) = 6 THEN CONVERT(VARCHAR(2), left(active_end_time, 2) - 12) + ':' + SUBSTRING(CAST(active_end_time AS CHAR), 3, 2) + ' P.M.' WHEN LEFT(active_end_time, 2) IN (10, 11) AND LEN(active_end_time) = 6 THEN CAST(LEFT(active_end_time, 2) AS CHAR(2)) + ':' + SUBSTRING(CAST(active_end_time AS CHAR), 3, 2) + ' A.M.' WHEN active_end_time = 0 THEN '12:00 A.M.' WHEN LEN(active_end_time) = 4 THEN '12:' + CONVERT(VARCHAR(2), left(active_end_time, 2)) + ' A.M.' WHEN LEN(active_end_time) = 3 THEN '12:0' + CONVERT(VARCHAR(2), left(active_end_time, 1)) + ' A.M.' WHEN LEN(active_end_time) = 2 THEN '12:00:' + CONVERT(VARCHAR(2), left(active_end_time, 2)) + ' A.M.' WHEN LEN(active_end_time) = 1 THEN '12:00:0' + CONVERT(VARCHAR(2), left(active_end_time, 2)) + ' A.M.' ELSE CAST(LEFT(active_end_time, 1) AS CHAR(1)) + ':' + SUBSTRING(CAST(active_end_time AS CHAR), 2, 2) + ' A.M.' END FROM #Schedules WHERE schedule IS NULL AND scheduled = 1 IF EXISTS (SELECT @freq_type WHERE @freq_type IN (1, 64)) BEGIN SELECT @SCHEDULE = CASE @freq_type WHEN 1 THEN 'Occurs Once, On ' + cast(@active_start_date AS VARCHAR(8)) + ', At ' + @start_time WHEN 64 THEN 'Occurs When SQL Server Agent Starts' END END ELSE BEGIN IF @freq_type = 4 BEGIN SELECT @SCHEDULE = 'Occurs Every ' + cast(@freq_interval AS VARCHAR(10)) + ' Day(s)' END IF @freq_type = 8 BEGIN SELECT @SCHEDULE = 'Occurs Every ' + cast(@freq_recurrence_factor AS VARCHAR(3)) + ' Week(s)' SELECT @schedule_day = '' IF (SELECT (convert(INT, (@freq_interval / 1 )) % 2)) = 1 SELECT @schedule_day = @schedule_day + 'Sun' IF (SELECT (convert(INT, (@freq_interval / 2 )) % 2)) = 1 SELECT @schedule_day = @schedule_day + 'Mon' IF (SELECT (convert(INT, (@freq_interval / 4 )) % 2)) = 1 SELECT @schedule_day = @schedule_day + 'Tue' IF (SELECT (convert(INT, (@freq_interval / 8 )) % 2)) = 1 SELECT @schedule_day = @schedule_day + 'Wed' IF (SELECT (convert(INT, (@freq_interval / 16)) % 2)) = 1 SELECT @schedule_day = @schedule_day + 'Thu' IF (SELECT (convert(INT, (@freq_interval / 32)) % 2)) = 1 SELECT @schedule_day = @schedule_day + 'Fri' IF (SELECT (convert(INT, (@freq_interval / 64)) % 2)) = 1 SELECT @schedule_day = @schedule_day + 'Sat' SELECT @SCHEDULE = @SCHEDULE + ', On ' + @schedule_day END IF @freq_type = 16 BEGIN SELECT @SCHEDULE = 'Occurs Every ' + cast(@freq_recurrence_factor AS VARCHAR(3)) + ' Month(s) on Day ' + cast(@freq_interval AS VARCHAR(3)) + ' of that Month' END IF @freq_type = 32 BEGIN SELECT @SCHEDULE = CASE @freq_relative_interval WHEN 1 THEN 'First' WHEN 2 THEN 'Second' WHEN 4 THEN 'Third' WHEN 8 THEN 'Fourth' WHEN 16 THEN 'Last' ELSE 'Not Applicable' END SELECT @SCHEDULE = CASE @freq_interval WHEN 1 THEN 'Occurs Every ' + @SCHEDULE + ' Sunday of the Month' WHEN 2 THEN 'Occurs Every ' + @SCHEDULE + ' Monday of the Month' WHEN 3 THEN 'Occurs Every ' + @SCHEDULE + ' Tueday of the Month' WHEN 4 THEN 'Occurs Every ' + @SCHEDULE + ' Wednesday of the Month' WHEN 5 THEN 'Occurs Every ' + @SCHEDULE + ' Thursday of the Month' WHEN 6 THEN 'Occurs Every ' + @SCHEDULE + ' Friday of the Month' WHEN 7 THEN 'Occurs Every ' + @SCHEDULE + ' Saturday of the Month' WHEN 8 THEN 'Occurs Every ' + @SCHEDULE + ' Day of the Month' WHEN 9 THEN 'Occurs Every ' + @SCHEDULE + ' Weekday of the Month' WHEN 10 THEN 'Occurs Every ' + @SCHEDULE + ' Weekend Day of the Month' END END SELECT @SCHEDULE = CASE @freq_subday_type WHEN 1 THEN @SCHEDULE + ', At ' + @start_time WHEN 2 THEN @SCHEDULE + ', every ' + cast(@freq_subday_interval AS VARCHAR(3)) + ' Second(s) Between ' + @start_time + ' and ' + @END_TIME WHEN 4 THEN @SCHEDULE + ', every ' + cast(@freq_subday_interval AS VARCHAR(3)) + ' Minute(s) Between ' + @start_time + ' and ' + @END_TIME WHEN 8 THEN @SCHEDULE + ', every ' + cast(@freq_subday_interval AS VARCHAR(3)) + ' Hour(s) Between ' + @start_time + ' and ' + @END_TIME END END END UPDATE #Schedules SET schedule = @SCHEDULE WHERE job_id = @job_id AND sched_id = @sched_Id END -- get results from temporary table SELECT job_name ,schedule AS 'frequency' ,[status] = CASE [STATUS] WHEN 1 THEN 'ENABLED' WHEN 0 THEN 'DISABLED' ELSE ' ' END ,scheduled = CASE scheduled WHEN 1 THEN 'Yes' WHEN 0 THEN 'No' ELSE ' ' END FROM #Schedules WHERE scheduled = 1 ORDER BY job_name -- cleanup of temp table IF OBJECT_ID('tempdb..#SCHEDULES') IS NOT NULL DROP TABLE #Schedules
Results
Script results screen:
Script results detailed description:
Column name | Data type | Description |
---|---|---|
job_name | sysname | Name of SQL Agent job. |
frequency | varchar(1000) | Text representation of SQL Agent job schedule. |
status | varchar | Can be values ENABLED or DISABLED. Specifying if SQL Agent job is enabled or not. |
scheduled | varchar | Can be values Yes or No. Specifying if SQL Agent job is scheduled or not. |