Added latest changes for SQL Agent - Refer v2

This commit is contained in:
Neeraj Kumar
2025-10-20 08:03:45 -04:00
parent 716014d0bf
commit 49a18b5c47
225 changed files with 10452 additions and 0 deletions

View File

@ -0,0 +1,65 @@
USE msdb;
GO
-- Schedule TEST Monthly Jobs for October 2025
------------------------------------------------
EXEC dbo.usp_ScheduleMonthlyJob
@JobName='TEST_MONTHLY_DTSRQ414',
@Env='TEST',
@RunDate='2025-11-03',
@RunTime='18:15:00';
EXEC dbo.usp_ScheduleMonthlyJob
@JobName='TEST_MONTHLY_DTSPMON1',
@Env='TEST',
@RunDate='2025-10-31',
@RunTime='19:15:00';
EXEC dbo.usp_ScheduleMonthlyJob
@JobName='TEST_MONTHLY_DTSCHGVB',
@Env='TEST',
@RunDate='2025-10-31',
@RunTime='19:26:00';
EXEC dbo.usp_ScheduleMonthlyJob
@JobName='TEST_MONTHLY_DTSCHGVR',
@Env='TEST',
@RunDate='2025-10-31',
@RunTime='19:27:00';
EXEC dbo.usp_ScheduleMonthlyJob
@JobName='TEST_MONTHLY_DTSVBKUP',
@Env='TEST',
@RunDate='2025-10-31',
@RunTime='19:26:00';
EXEC dbo.usp_ScheduleMonthlyJob
@JobName='TEST_MONTHLY_DTSVRSTR',
@Env='TEST',
@RunDate='2025-10-31',
@RunTime='19:30:00';
EXEC dbo.usp_ScheduleMonthlyJob
@JobName='TEST_MONTHLY_DTSRQ442',
@Env='TEST',
@RunDate='2025-10-31',
@RunTime='19:37:00';
EXEC dbo.usp_ScheduleMonthlyJob
@JobName='TEST_MONTHLY_DTSBX460',
@Env='TEST',
@RunDate='2025-10-31',
@RunTime='19:35:00';
EXEC dbo.usp_ScheduleMonthlyJob
@JobName='TEST_MONTHLY_DTSRQ513',
@Env='TEST',
@RunDate='2025-10-31',
@RunTime='19:37:00';
EXEC dbo.usp_ScheduleMonthlyJob
@JobName='TEST_MONTHLY_DTSCHGDC',
@Env='TEST',
@RunDate='2025-11-03',
@RunTime='13:00:00';
GO

View File

@ -0,0 +1,279 @@
USE [msdb]
GO
-- Execute the stored procedure for each job
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSBX215',
@StartTimeHHMMSS = 40000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSBX305',
@StartTimeHHMMSS = 40000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSGSID0',
@StartTimeHHMMSS = 60000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_GSIRQ300',
@StartTimeHHMMSS = 60500,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSRQ202',
@StartTimeHHMMSS = 61000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSGSID1',
@StartTimeHHMMSS = 61500,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSBX202',
@StartTimeHHMMSS = 70000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSFT202',
@StartTimeHHMMSS = 80000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSBX432',
@StartTimeHHMMSS = 83000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSGACHD',
@StartTimeHHMMSS = 90000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSBX303',
@StartTimeHHMMSS = 100000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSGWAGE',
@StartTimeHHMMSS = 140000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSGCHKS',
@StartTimeHHMMSS = 140500,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSESDAY',
@StartTimeHHMMSS = 140500,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSGPAYT',
@StartTimeHHMMSS = 141000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSDX145',
@StartTimeHHMMSS = 160500,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSBX629',
@StartTimeHHMMSS = 161500,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSBX630',
@StartTimeHHMMSS = 163000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSFRAUD',
@StartTimeHHMMSS = 163000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSRACHD',
@StartTimeHHMMSS = 170000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSBXACH',
@StartTimeHHMMSS = 170000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSBXREG',
@StartTimeHHMMSS = 170000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSBX430',
@StartTimeHHMMSS = 170000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSBX626',
@StartTimeHHMMSS = 170000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSBX530',
@StartTimeHHMMSS = 170000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSBXREL',
@StartTimeHHMMSS = 170000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSBX450',
@StartTimeHHMMSS = 171500,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSBX451',
@StartTimeHHMMSS = 171500,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSPACHD',
@StartTimeHHMMSS = 180000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSPX148',
@StartTimeHHMMSS = 180500,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSRQ325',
@StartTimeHHMMSS = 180500,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSBX427',
@StartTimeHHMMSS = 180700,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSPDAY1',
@StartTimeHHMMSS = 181000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSW4WGE',
@StartTimeHHMMSS = 181500,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSGSID2',
@StartTimeHHMMSS = 181500,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSGSID9',
@StartTimeHHMMSS = 181500,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSMIN01',
@StartTimeHHMMSS = 182000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSMIN02',
@StartTimeHHMMSS = 182000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSRQ459',
@StartTimeHHMMSS = 190000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSBXPFL',
@StartTimeHHMMSS = 190000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DESBD427',
@StartTimeHHMMSS = 190500,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSBX403',
@StartTimeHHMMSS = 200000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSBE405',
@StartTimeHHMMSS = 201500,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSBX405',
@StartTimeHHMMSS = 201500,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSRQ335',
@StartTimeHHMMSS = 210000,
@Env = 'TEST',
@Frequency = 'DAILY';
EXEC [dbo].[usp_CreateSQLAgentJob]
@JobName = 'TEST_DAILY_DTSBX601',
@StartTimeHHMMSS = 212500,
@Env = 'TEST',
@Frequency = 'DAILY';

View File

@ -0,0 +1,76 @@
USE [msdb];
GO
-- Note: Frequency here is used only for description (used for category): MONTHLY
-- By Default Job will be scheduled Mon to Fri at specified time. Please change the schedules as per the requirement.
-- 1.
EXEC dbo.usp_CreateSQLAgentJob
@JobName = 'TEST_MONTHLY_DTSRQ414',
@StartTimeHHMMSS = 181500,
@Env = 'TEST',
@Frequency = 'MONTHLY';
-- 2.
EXEC dbo.usp_CreateSQLAgentJob
@JobName = 'TEST_MONTHLY_DTSPMON1',
@StartTimeHHMMSS = 191500,
@Env = 'TEST',
@Frequency = 'MONTHLY';
-- 3.
EXEC dbo.usp_CreateSQLAgentJob
@JobName = 'TEST_MONTHLY_DTSCHGVB',
@StartTimeHHMMSS = 192600,
@Env = 'TEST',
@Frequency = 'MONTHLY';
-- 4.
EXEC dbo.usp_CreateSQLAgentJob
@JobName = 'TEST_MONTHLY_DTSCHGVR',
@StartTimeHHMMSS = 192700,
@Env = 'TEST',
@Frequency = 'MONTHLY';
-- 5.
EXEC dbo.usp_CreateSQLAgentJob
@JobName = 'TEST_MONTHLY_DTSVBKUP',
@StartTimeHHMMSS = 192600,
@Env = 'TEST',
@Frequency = 'MONTHLY';
-- 6.
EXEC dbo.usp_CreateSQLAgentJob
@JobName = 'TEST_MONTHLY_DTSVRSTR',
@StartTimeHHMMSS = 193000,
@Env = 'TEST',
@Frequency = 'MONTHLY';
-- 7.
EXEC dbo.usp_CreateSQLAgentJob
@JobName = 'TEST_MONTHLY_DTSRQ442',
@StartTimeHHMMSS = 193700,
@Env = 'TEST',
@Frequency = 'MONTHLY';
-- 8.
EXEC dbo.usp_CreateSQLAgentJob
@JobName = 'TEST_MONTHLY_DTSBX460',
@StartTimeHHMMSS = 193500,
@Env = 'TEST',
@Frequency = 'MONTHLY';
-- 9.
EXEC dbo.usp_CreateSQLAgentJob
@JobName = 'TEST_MONTHLY_DTSRQ513',
@StartTimeHHMMSS = 193700,
@Env = 'TEST',
@Frequency = 'MONTHLY';
-- 10.
EXEC dbo.usp_CreateSQLAgentJob
@JobName = 'TEST_MONTHLY_DTSCHGDC',
@StartTimeHHMMSS = 130000,
@Env = 'TEST',
@Frequency = 'MONTHLY';
GO

View File

@ -0,0 +1,9 @@
USE [msdb]
GO
-- Create a job that runs Monday-Friday at 4:00 AM
EXEC dbo.usp_CreateSQLAgentJob
@JobName = 'TEST_DAILY_DTSBX215',
@StartTimeHHMMSS = 40000, -- For 4:00:00 AM (143000 for 2:30:00 PM)
@Env = 'TEST',
@Frequency = 'DAILY';

View File

@ -0,0 +1,81 @@
USE [msdb]
GO
-- Note: Frequency here is used only for description (used for category): DAILY, WEEKLY, etc.
-- By Default Job will be scheduled to run on Mon to Fri at specified time. Please change the schedules as per the requirement.
-- 1.
EXEC dbo.usp_CreateSQLAgentJob
@JobName = 'TEST_WEEKLY_DTSGSID0',
@StartTimeHHMMSS = 60000,
@Env = 'TEST',
@Frequency = 'WEEKLY';
-- 2.
EXEC dbo.usp_CreateSQLAgentJob
@JobName = 'TEST_WEEKLY_DTSGSID1',
@StartTimeHHMMSS = 61500,
@Env = 'TEST',
@Frequency = 'WEEKLY';
-- 3.
EXEC dbo.usp_CreateSQLAgentJob
@JobName = 'TEST_WEEKLY_DTSBX202',
@StartTimeHHMMSS = 70000,
@Env = 'TEST',
@Frequency = 'WEEKLY';
-- 4.
EXEC dbo.usp_CreateSQLAgentJob
@JobName = 'TEST_WEEKLY_DTSFT202',
@StartTimeHHMMSS = 80000,
@Env = 'TEST',
@Frequency = 'WEEKLY';
-- 5.
EXEC dbo.usp_CreateSQLAgentJob
@JobName = 'TEST_WEEKLY_DTSBX470',
@StartTimeHHMMSS = 70000,
@Env = 'TEST',
@Frequency = 'WEEKLY';
-- 6.
EXEC dbo.usp_CreateSQLAgentJob
@JobName = 'TEST_WEEKLY_DTSBXREJ',
@StartTimeHHMMSS = 170000,
@Env = 'TEST',
@Frequency = 'WEEKLY';
-- 7.
EXEC dbo.usp_CreateSQLAgentJob
@JobName = 'TEST_WEEKLY_DTSPDAY7',
@StartTimeHHMMSS = 191000,
@Env = 'TEST',
@Frequency = 'WEEKLY';
-- 8.
EXEC dbo.usp_CreateSQLAgentJob
@JobName = 'TEST_WEEKLY_DTSBX122',
@StartTimeHHMMSS = 191400,
@Env = 'TEST',
@Frequency = 'WEEKLY';
-- 9.
EXEC dbo.usp_CreateSQLAgentJob
@JobName = 'TEST_WEEKLY_DTSRQ511',
@StartTimeHHMMSS = 191400,
@Env = 'TEST',
@Frequency = 'WEEKLY';
-- 10.
EXEC dbo.usp_CreateSQLAgentJob
@JobName = 'TEST_WEEKLY_DTSRQ444',
@StartTimeHHMMSS = 70000,
@Env = 'TEST',
@Frequency = 'WEEKLY';
-- 11.
EXEC dbo.usp_CreateSQLAgentJob
@JobName = 'TEST_WEEKLY_DTSRQ126',
@StartTimeHHMMSS = 90000,
@Env = 'TEST',
@Frequency = 'WEEKLY';

View File

@ -0,0 +1,86 @@
/********************************************************************************************
Section 1: Daily Job Schedule Lookup
--------------------------------------------------------------------------------------------
Description:
Returns all SQL Agent jobs scheduled to run on a given date, along with their control
status (IsActive) and configured runtime from JobControl.
Parameters:
@CheckDate - The date to check job schedules for.
Notes:
<20> Uses MSDB<44>s internal schedule definitions (sysschedules, sysjobschedules).
<20> Supports One-time, Daily, Weekly, and Monthly schedule types.
<20> Can easily be adapted for DEVL / TEST / PROD by changing @DbName.
********************************************************************************************/
USE msdb;
GO
DECLARE @CheckDate DATE = CAST(GETDATE() AS DATE); -- Change if needed
DECLARE @CheckWeekday INT = DATEPART(WEEKDAY, @CheckDate);
DECLARE @Env SYSNAME = 'TEST'; -- Change for DEVL or PROD
DECLARE @DbName SYSNAME;
-- Map environment to the right control DB
SET @DbName = CASE @Env
WHEN 'DEVL' THEN 'DevlDUTASJobSchedule'
WHEN 'TEST' THEN 'TestDUTASJobSchedule'
WHEN 'PROD' THEN 'ProdDUTASJobSchedule'
END;
DECLARE @Sql NVARCHAR(MAX);
SET @Sql = N'
SELECT
j.name AS SQLAgentJobName,
jc.JobName AS ControlJobName,
jc.ScheduledStartTime,
jc.IsActive,
s.name AS ScheduleName,
s.freq_type,
s.freq_interval,
s.freq_subday_type,
s.freq_subday_interval,
s.active_start_date,
CASE s.freq_type
WHEN 1 THEN ''One-time''
WHEN 4 THEN ''Daily''
WHEN 8 THEN ''Weekly''
WHEN 16 THEN ''Monthly''
ELSE ''Other''
END AS FrequencyType,
CASE
WHEN s.freq_type = 1
AND s.active_start_date = CONVERT(INT, CONVERT(CHAR(8), @CheckDateParam, 112))
THEN 1
WHEN s.freq_type = 4
AND s.active_start_date <= CONVERT(INT, CONVERT(CHAR(8), @CheckDateParam, 112))
THEN 1
WHEN s.freq_type = 8 -- Weekly
AND (POWER(2, @CheckWeekdayParam - 1) & s.freq_interval) > 0
THEN 1
WHEN s.freq_type = 16 -- Monthly
AND DAY(@CheckDateParam) = s.freq_interval
THEN 1
ELSE 0
END AS IsScheduledToday
FROM msdb.dbo.sysjobs j
JOIN msdb.dbo.sysjobschedules js ON j.job_id = js.job_id
JOIN msdb.dbo.sysschedules s ON js.schedule_id = s.schedule_id
LEFT JOIN ' + QUOTENAME(@DbName) + '.dbo.JobControl jc ON jc.JobName = j.name
WHERE jc.IsActive = 1
AND (
(s.freq_type = 1 AND s.active_start_date = CONVERT(INT, CONVERT(CHAR(8), @CheckDateParam, 112))) -- One-time
OR (s.freq_type = 4 AND s.active_start_date <= CONVERT(INT, CONVERT(CHAR(8), @CheckDateParam, 112))) -- Daily
OR (s.freq_type = 8 AND (POWER(2, @CheckWeekdayParam - 1) & s.freq_interval) > 0) -- Weekly
OR (s.freq_type = 16 AND DAY(@CheckDateParam) = s.freq_interval) -- Monthly
)
ORDER BY jc.ScheduledStartTime;
';
EXEC sp_executesql
@Sql,
N'@CheckDateParam DATE, @CheckWeekdayParam INT',
@CheckDateParam = @CheckDate,
@CheckWeekdayParam = @CheckWeekday;
GO

View File

@ -0,0 +1,12 @@
USE TestDUTASJobSchedule;
GO
UPDATE dbo.JobControl
SET IsActive = 0
WHERE Frequency = 'MONTHLY';
GO
-- Optional: Verify changes
SELECT JobName, Frequency, IsActive
FROM dbo.JobControl
WHERE Frequency = 'MONTHLY';

View File

@ -0,0 +1,13 @@
-- If you know both the job name and schedule name
DECLARE @JobName NVARCHAR(100) = 'TEST_MONTHLY_DTSCHGDC';
DECLARE @ScheduleName NVARCHAR(200) = 'TEST_MONTHLY_DTSCHGDC_MonthlySchedule';
DECLARE @JobId UNIQUEIDENTIFIER;
-- Get job ID
SELECT @JobId = job_id FROM msdb.dbo.sysjobs WHERE name = @JobName;
-- Detach from specific job
EXEC msdb.dbo.sp_detach_schedule @job_id = @JobId, @schedule_name = @ScheduleName;
-- Then delete
EXEC msdb.dbo.sp_delete_schedule @schedule_name = @ScheduleName;

View File

@ -0,0 +1,16 @@
USE TestDUTASJobSchedule;
GO
-- 1. Check today's job status
SELECT JobName, Status, ErrorMessage
FROM dbo.JobExecutionHistory
WHERE RunDate = CAST(GETDATE() AS DATE)
AND JobName = 'DEVL_WEEKLY_DTSGSID1';
-- 2. Mark DTSBX305 as manually overridden
EXEC dbo.usp_ForceComplete 'DEVL_WEEKLY_DTSGSID1', 'Neeraj.Kumar';
-- 3. Verify the override
SELECT JobName, Status, OverrideBy, OverrideDate
FROM dbo.JobExecutionHistory
WHERE JobName = 'DEVL_WEEKLY_DTSGSID1' AND RunDate = CAST(GETDATE() AS DATE);

View File

@ -0,0 +1,47 @@
USE msdb;
GO
PRINT '================================================================================';
PRINT 'SECTION 1: JOB CONTROL INFORMATION';
PRINT '================================================================================';
GO
-- View all active jobs
SELECT JobName, ScheduledStartTime, Frequency, IsActive
FROM TestDUTASJobSchedule.dbo.JobControl
WHERE IsActive = 1
ORDER BY Frequency, ScheduledStartTime;
GO
-- View all inactive jobs
SELECT JobName, Frequency, ScheduledStartTime
FROM TestDUTASJobSchedule.dbo.JobControl
WHERE IsActive = 0
ORDER BY Frequency;
GO
-- Find weekly/monthly jobs
SELECT JobName, Frequency, ScheduledStartTime
FROM TestDUTASJobSchedule.dbo.JobControl
WHERE Frequency IN ('WEEKLY', 'MONTHLY')
ORDER BY Frequency, ScheduledStartTime;
GO
PRINT '================================================================================';
PRINT 'SECTION 2: JOB DEPENDENCIES';
PRINT '================================================================================';
GO
-- Check dependencies for a job
DECLARE @Job NVARCHAR(100) = 'TEST_MONTHLY_DTSCHGVR';
SELECT JobName, PredecessorJobName
FROM TestDUTASJobSchedule.dbo.JobDependencies
WHERE JobName = @Job;
GO
-- Show dependency chain overview
SELECT d.JobName, d.PredecessorJobName, jc.ScheduledStartTime, jc.Frequency
FROM TestDUTASJobSchedule.dbo.JobDependencies d
JOIN TestDUTASJobSchedule.dbo.JobControl jc ON d.JobName = jc.JobName
ORDER BY jc.Frequency, jc.ScheduledStartTime;
GO

View File

@ -0,0 +1,42 @@
USE msdb;
GO
PRINT '================================================================================';
PRINT 'SECTION 1: SQL AGENT JOB STATUS';
PRINT '================================================================================';
GO
-- List all jobs in SQL Agent
SELECT name AS JobName, enabled, date_created, date_modified
FROM msdb.dbo.sysjobs
ORDER BY name;
GO
-- Job schedule summary
SELECT j.name AS JobName, s.name AS ScheduleName,
s.enabled, s.freq_type, s.active_start_date, s.active_start_time
FROM msdb.dbo.sysjobs j
JOIN msdb.dbo.sysjobschedules js ON j.job_id = js.job_id
JOIN msdb.dbo.sysschedules s ON js.schedule_id = s.schedule_id
ORDER BY j.name;
GO
-- Last job run details
SELECT j.name AS JobName,
h.run_status,
CASE h.run_status
WHEN 0 THEN 'Failed'
WHEN 1 THEN 'Succeeded'
WHEN 2 THEN 'Retry'
WHEN 3 THEN 'Canceled'
WHEN 4 THEN 'In Progress'
END AS StatusDescription,
msdb.dbo.agent_datetime(h.run_date, h.run_time) AS RunDateTime,
h.run_duration
FROM dbo.sysjobs j
LEFT JOIN dbo.sysjobhistory h ON j.job_id = h.job_id
WHERE h.instance_id IN (
SELECT MAX(instance_id) FROM dbo.sysjobhistory GROUP BY job_id
)
ORDER BY RunDateTime DESC;
GO

View File

@ -0,0 +1,21 @@
USE TestDUTASJobSchedule;
GO
DECLARE @Runday DATE = DATEADD(day, +0, CAST(GETDATE() AS DATE)); -- -1 for Yesterday
SELECT
jeh.ExecutionID,
jeh.JobName,
jeh.RunDate,
jc.ScheduledStartTime,
jeh.ActualStartTime,
jeh.ActualEndTime,
jeh.Status,
jeh.ErrorMessage,
jeh.OverrideFlag,
jeh.OverrideBy
FROM dbo.JobExecutionHistory jeh
INNER JOIN dbo.JobControl jc
ON jeh.JobName = jc.JobName
WHERE jeh.RunDate = @Runday
ORDER BY jc.ScheduledStartTime, jeh.ActualStartTime;

View File

@ -0,0 +1,9 @@
USE [TestDUTASJobSchedule]
GO
-- 1. Preview missed jobs (safe, no run):
EXEC dbo.usp_TriggerMissedJobs @DryRun = 1;
-- 2. Actually trigger missed jobs:
EXEC dbo.usp_TriggerMissedJobs @DryRun = 0;