diff --git a/SQLAgent/01_Devl/1_Database_Setup/CreateDB.sql b/SQLAgent/01_Devl/1_Database_Setup/CreateDB.sql deleted file mode 100644 index 4a9a22c..0000000 --- a/SQLAgent/01_Devl/1_Database_Setup/CreateDB.sql +++ /dev/null @@ -1,83 +0,0 @@ --- Create the database -CREATE DATABASE DevlDUTASJobSchedule; -GO - -USE DevlDUTASJobSchedule; -GO - --- Create the main control table -CREATE TABLE dbo.JobControl -( - JobID INT IDENTITY(1,1) NOT NULL, - JobName VARCHAR(50) NOT NULL, - ScheduledStartTime TIME(7) NOT NULL, - SchedulerAction VARCHAR(10) NOT NULL, -- STOP or CONTINUE - IsActive BIT NOT NULL CONSTRAINT DF_JobControl_IsActive DEFAULT (1), - CreatedDate DATETIME NOT NULL CONSTRAINT DF_JobControl_CreatedDate DEFAULT (GETDATE()), - Frequency CHAR(20) NOT NULL CONSTRAINT DF_JobControl_Frequency DEFAULT ('DAILY'), - FrequencyPattern NVARCHAR(500) NULL, -- JSON scheduling rule - - CONSTRAINT PK_JobControl PRIMARY KEY CLUSTERED (JobID ASC), - CONSTRAINT UQ_JobControl_JobName UNIQUE NONCLUSTERED (JobName ASC), - CONSTRAINT CK_JobControl_SchedulerAction CHECK (SchedulerAction IN ('STOP', 'CONTINUE')) -); -GO - --- Create job dependencies table -CREATE TABLE dbo.JobDependencies ( - DependencyID INT IDENTITY(1,1) PRIMARY KEY, - JobName VARCHAR(50) NOT NULL, - PredecessorJobName VARCHAR(50) NULL, - FOREIGN KEY (JobName) REFERENCES dbo.JobControl(JobName) -); -GO - --- Create execution history table -CREATE TABLE dbo.JobExecutionHistory ( - ExecutionID INT IDENTITY(1,1) PRIMARY KEY, - JobName VARCHAR(50) NOT NULL, - RunDate DATE NOT NULL, - ScheduledStartTime TIME NOT NULL, - ActualStartTime DATETIME NULL, - ActualEndTime DATETIME NULL, - Status VARCHAR(20) DEFAULT 'Pending' CHECK (Status IN ('Pending', 'Running', 'Success', 'Failed', 'ForceComplete')), - ErrorMessage VARCHAR(MAX) NULL, - OverrideFlag BIT DEFAULT 0, - OverrideBy VARCHAR(100) NULL, - OverrideDate DATETIME NULL -); -GO - --- Create holidays table -CREATE TABLE dbo.FederalHolidays ( - HolidayID INT IDENTITY(1,1) PRIMARY KEY, - HolidayDate DATE NOT NULL UNIQUE, - HolidayName VARCHAR(100) NOT NULL, - Year INT NOT NULL -); -GO - --- Create Exit Code table for PowerShell Script -CREATE TABLE dbo.JobExitCodes -( - JobExecutionID INT IDENTITY(1,1) PRIMARY KEY, -- unique ID per execution - JobName NVARCHAR(128) NOT NULL, -- job name - RunDate DATE NOT NULL, -- date of execution - ExitCode INT NOT NULL, -- exit code from job - RecordedTime DATETIME NOT NULL DEFAULT GETDATE() -- timestamp of execution -); -GO --- Create JobSchedule table -CREATE TABLE dbo.JobSchedule ( - JobScheduleID INT IDENTITY(1,1) PRIMARY KEY, - JobName VARCHAR(100) NOT NULL, - Frequency VARCHAR(20) CHECK (Frequency IN ('Monthly','Quarterly')), - ScheduledRule NVARCHAR(500) NULL, -- Copy of JSON or rule text from JobControl - ScheduledDate DATE NOT NULL, -- Planned date (before adjustment) - AdjustedRunDate DATE NOT NULL, -- Final working-day adjusted date - MonthOfSchedule CHAR(7) NOT NULL, -- 'YYYY-MM' - YearOfSchedule INT NOT NULL, - CreatedOn DATETIME DEFAULT GETDATE(), - CreatedBy VARCHAR(50) DEFAULT SUSER_SNAME() -); -GO \ No newline at end of file diff --git a/SQLAgent/01_Devl/1_Database_Setup/InsertHolidays.sql b/SQLAgent/01_Devl/1_Database_Setup/InsertHolidays.sql deleted file mode 100644 index 4122b78..0000000 --- a/SQLAgent/01_Devl/1_Database_Setup/InsertHolidays.sql +++ /dev/null @@ -1,29 +0,0 @@ -USE [DevlDUTASJobSchedule] -GO -SET IDENTITY_INSERT [dbo].[FederalHolidays] ON -GO -INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (1, CAST(N'2025-01-01' AS Date), N'New Years Day', 2025) -INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (2, CAST(N'2025-01-20' AS Date), N'Martin Luther King Day', 2025) -INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (3, CAST(N'2025-02-17' AS Date), N'Presidents Day', 2025) -INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (4, CAST(N'2025-05-26' AS Date), N'Memorial Day', 2025) -INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (5, CAST(N'2025-06-19' AS Date), N'Juneteenth Day', 2025) -INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (6, CAST(N'2025-07-04' AS Date), N'Independence Day', 2025) -INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (7, CAST(N'2025-09-01' AS Date), N'Labor Day', 2025) -INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (8, CAST(N'2025-10-13' AS Date), N'Columbus Day', 2025) -INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (9, CAST(N'2025-11-11' AS Date), N'Veterans Day', 2025) -INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (10, CAST(N'2025-11-27' AS Date), N'Thanksgiving Day', 2025) -INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (11, CAST(N'2025-12-25' AS Date), N'Christmas Day', 2025) -INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (12, CAST(N'2026-01-01' AS Date), N'New Years Day', 2026) -INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (13, CAST(N'2026-01-19' AS Date), N'Martin Luther King Day', 2026) -INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (14, CAST(N'2026-02-16' AS Date), N'Presidents Day', 2026) -INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (15, CAST(N'2026-05-25' AS Date), N'Memorial Day', 2026) -INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (16, CAST(N'2026-06-19' AS Date), N'Juneteenth Day', 2026) -INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (17, CAST(N'2026-07-03' AS Date), N'Independence Day', 2026) -INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (18, CAST(N'2026-09-07' AS Date), N'Labor Day', 2026) -INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (19, CAST(N'2026-10-12' AS Date), N'Columbus Day', 2026) -INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (20, CAST(N'2026-11-11' AS Date), N'Veterans Day', 2026) -INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (21, CAST(N'2026-11-26' AS Date), N'Thanksgiving Day', 2026) -INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (22, CAST(N'2026-12-25' AS Date), N'Christmas Day', 2026) -GO -SET IDENTITY_INSERT [dbo].[FederalHolidays] OFF -GO diff --git a/SQLAgent/01_Devl/1_Database_Setup/InsertJobControl.sql b/SQLAgent/01_Devl/1_Database_Setup/InsertJobControl.sql deleted file mode 100644 index 9f646af..0000000 --- a/SQLAgent/01_Devl/1_Database_Setup/InsertJobControl.sql +++ /dev/null @@ -1,143 +0,0 @@ -USE [DevlDUTASJobSchedule] -GO -SET IDENTITY_INSERT [dbo].[JobControl] ON -GO -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (1, N'DEVL_DAILY_DTSBX215', CAST(N'04:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (2, N'DEVL_DAILY_DTSBX305', CAST(N'04:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (3, N'DEVL_DAILY_DTSGSID0', CAST(N'06:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (4, N'DEVL_DAILY_GSIRQ300', CAST(N'06:05:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (5, N'DEVL_DAILY_DTSRQ202', CAST(N'06:10:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (6, N'DEVL_DAILY_DTSGSID1', CAST(N'06:15:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (7, N'DEVL_DAILY_DTSBX202', CAST(N'07:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (8, N'DEVL_DAILY_DTSFT202', CAST(N'08:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (9, N'DEVL_DAILY_DTSBX432', CAST(N'08:30:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (10, N'DEVL_DAILY_DTSGACHD', CAST(N'09:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (11, N'DEVL_DAILY_DTSBX303', CAST(N'10:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (12, N'DEVL_DAILY_DTSGWAGE', CAST(N'14:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (13, N'DEVL_DAILY_DTSGCHKS', CAST(N'14:05:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (14, N'DEVL_DAILY_DTSESDAY', CAST(N'14:05:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (15, N'DEVL_DAILY_DTSGPAYT', CAST(N'14:10:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (16, N'DEVL_DAILY_DTSDX145', CAST(N'16:05:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (17, N'DEVL_DAILY_DTSBX629', CAST(N'16:15:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (18, N'DEVL_DAILY_DTSBX630', CAST(N'16:30:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (19, N'DEVL_DAILY_DTSFRAUD', CAST(N'16:30:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (20, N'DEVL_DAILY_DTSRACHD', CAST(N'17:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (21, N'DEVL_DAILY_DTSBXACH', CAST(N'17:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (22, N'DEVL_DAILY_DTSBXREG', CAST(N'17:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (23, N'DEVL_DAILY_DTSBX430', CAST(N'17:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (24, N'DEVL_DAILY_DTSBX626', CAST(N'17:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (25, N'DEVL_DAILY_DTSBX530', CAST(N'17:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (26, N'DEVL_DAILY_DTSBXREL', CAST(N'17:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (27, N'DEVL_DAILY_DTSBX450', CAST(N'17:15:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (28, N'DEVL_DAILY_DTSBX451', CAST(N'17:15:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (29, N'DEVL_DAILY_DTSPACHD', CAST(N'18:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (30, N'DEVL_DAILY_DTSPX148', CAST(N'18:05:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (31, N'DEVL_DAILY_DTSRQ325', CAST(N'18:05:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (32, N'DEVL_DAILY_DTSBX427', CAST(N'18:07:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (33, N'DEVL_DAILY_DTSPDAY1', CAST(N'18:10:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (34, N'DEVL_DAILY_DTSW4WGE', CAST(N'18:15:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (35, N'DEVL_DAILY_DTSGSID2', CAST(N'18:15:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (36, N'DEVL_DAILY_DTSGSID9', CAST(N'18:15:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (37, N'DEVL_DAILY_DTSMIN01', CAST(N'18:20:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (38, N'DEVL_DAILY_DTSMIN02', CAST(N'18:20:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (39, N'DEVL_DAILY_DTSRQ459', CAST(N'19:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (40, N'DEVL_DAILY_DTSBXPFL', CAST(N'19:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (41, N'DEVL_DAILY_DESBD427', CAST(N'19:05:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (42, N'DEVL_DAILY_DTSBX403', CAST(N'20:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (43, N'DEVL_DAILY_DTSBE405', CAST(N'20:15:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (44, N'DEVL_DAILY_DTSBX405', CAST(N'20:15:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (45, N'DEVL_DAILY_DTSRQ335', CAST(N'21:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (46, N'DEVL_DAILY_DTSBX601', CAST(N'21:25:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (47, N'DEVL_WEEKLY_DTSGSID0', CAST(N'06:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Sat","Sun"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (48, N'DEVL_WEEKLY_DTSGSID1', CAST(N'06:15:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Sat","Sun"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (49, N'DEVL_WEEKLY_DTSBX202', CAST(N'07:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Sat","Sun"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (50, N'DEVL_WEEKLY_DTSFT202', CAST(N'08:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Sat","Sun"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (51, N'DEVL_WEEKLY_DTSBX470', CAST(N'07:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (52, N'DEVL_WEEKLY_DTSBXREJ', CAST(N'17:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Tue","Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (53, N'DEVL_WEEKLY_DTSPDAY7', CAST(N'19:10:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (54, N'DEVL_WEEKLY_DTSBX122', CAST(N'19:14:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (55, N'DEVL_WEEKLY_DTSRQ511', CAST(N'19:14:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Fri"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (56, N'DEVL_WEEKLY_DTSRQ444', CAST(N'07:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Mon"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (57, N'DEVL_WEEKLY_DTSRQ126', CAST(N'09:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Mon"]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (58, N'DEVL_MONTHLY_DTSRQ414', CAST(N'18:15:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"FirstWorkday"}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (59, N'DEVL_MONTHLY_DTSPMON1', CAST(N'19:15:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"LastWorkday"}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (60, N'DEVL_MONTHLY_DTSCHGVB', CAST(N'19:26:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"LastWorkday"}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (61, N'DEVL_MONTHLY_DTSCHGVR', CAST(N'19:27:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"LastWorkday"}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (62, N'DEVL_MONTHLY_DTSVBKUP', CAST(N'19:26:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"LastWorkday"}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (63, N'DEVL_MONTHLY_DTSVRSTR', CAST(N'19:30:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"LastWorkday"}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (64, N'DEVL_MONTHLY_DTSRQ442', CAST(N'19:37:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"LastWorkday"}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (65, N'DEVL_MONTHLY_DTSBX460', CAST(N'19:35:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"LastWorkday"}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (66, N'DEVL_MONTHLY_DTSRQ513', CAST(N'19:37:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"LastWorkday"}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (67, N'DEVL_MONTHLY_DTSCHGDC', CAST(N'13:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"FirstWorkday"}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (68, N'DEVL_QUARTERLY_DTSRQ119', CAST(N'18:07:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Months":[3,6,9,12],"Day":3}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (69, N'DEVL_QUARTERLY_DTSRQ902', CAST(N'18:16:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Months":[3,6,9,12],"Day":1}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (70, N'DEVL_QUARTERLY_DTSBX500', CAST(N'21:25:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Months":[3,6,9,12],"Day":1}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (71, N'DEVL_QUARTERLY_DTSRQ417', CAST(N'18:07:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Schedule":[{"Month":2,"Day":28},{"Month":5,"Day":31},{"Month":8,"Day":31},{"Month":11,"Day":30}]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (72, N'DEVL_QUARTERLY_DTSRQ320', CAST(N'18:07:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Schedule":[{"Month":2,"Day":10},{"Month":5,"Day":10},{"Month":8,"Day":10},{"Month":11,"Day":10}]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (73, N'DEVL_QUARTERLY_DTSRQ713', CAST(N'00:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Schedule":[{"Month":3,"Day":31},{"Month":6,"Day":30},{"Month":9,"Day":30},{"Month":12,"Day":31}]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (74, N'DEVL_QUARTERLY_DTSBX468', CAST(N'15:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Schedule":[{"Month":2,"Day":28},{"Month":5,"Day":30},{"Month":7,"Day":31},{"Month":10,"Day":30}]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (75, N'DEVL_QUARTERLY_DTSCHGQ1', CAST(N'18:07:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Rule":"FirstWorkdayOfQuarter"}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (76, N'DEVL_QUARTERLY_DTSCHGQ2', CAST(N'18:16:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Rule":"FirstWorkdayOfQuarter"}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (77, N'DEVL_QUARTERLY_DTSRQ327', CAST(N'18:07:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Schedule":[{"Month":2,"Day":7},{"Month":5,"Day":7},{"Month":8,"Day":7},{"Month":11,"Day":7}]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (78, N'DEVL_QUARTERLY_DTSRQ328', CAST(N'18:16:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Schedule":[{"Month":2,"Day":7},{"Month":5,"Day":7},{"Month":8,"Day":7},{"Month":11,"Day":7}]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (79, N'DEVL_QUARTERLY_DTSRQ412', CAST(N'18:07:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Schedule":[{"Month":1,"Day":15},{"Month":4,"Day":15},{"Month":7,"Day":15},{"Month":10,"Day":15}]}') -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (80, N'DEVL_QUARTERLY_DTSRQ793', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (81, N'DEVL_QUARTERLY_DTSWGE06', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (82, N'DEVL_QUARTERLY_DTSCHGRT', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (83, N'DEVL_QUARTERLY_DTSCHRGS', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (84, N'DEVL_QUARTERLY_DTSRQ540', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (85, N'DEVL_QUARTERLY_DTSRQ591', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (86, N'DEVL_QUARTERLY_DTSRTCHG', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (87, N'DEVL_QUARTERLY_DTSWGE01', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (88, N'DEVL_QUARTERLY_DESBD426', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (89, N'DEVL_ONDEMAND_DTSACH01', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (90, N'DEVL_ONDEMAND_DTSBX415', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (91, N'DEVL_ONDEMAND_DTSBX452', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (92, N'DEVL_ONDEMAND_DTSBX453', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (93, N'DEVL_ONDEMAND_DTSRQ120', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (94, N'DEVL_ONDEMAND_DTSRQ123', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (95, N'DEVL_ONDEMAND_DTSRQ125', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (96, N'DEVL_ONDEMAND_DTSRQ305', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (97, N'DEVL_ONDEMAND_DTSRQ306', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (98, N'DEVL_ONDEMAND_DTSRQ308', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (99, N'DEVL_ONDEMAND_DTSRQ311', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (100, N'DEVL_ONDEMAND_DTSRQ410', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (101, N'DEVL_ONDEMAND_DTSRQ411', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (102, N'DEVL_ONDEMAND_DTSRQ423', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (103, N'DEVL_ONDEMAND_DTSRQ426', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (104, N'DEVL_ONDEMAND_DTSRQ429', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (105, N'DEVL_ONDEMAND_DTSRQ439', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (106, N'DEVL_ONDEMAND_DTSRQ602', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (107, N'DEVL_ONDEMAND_DTSRQ606', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (108, N'DEVL_ONDEMAND_DTSRQ607', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (109, N'DEVL_ONDEMAND_DTSRQ609', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (110, N'DEVL_ONDEMAND_DTSRQ611', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (111, N'DEVL_ONDEMAND_DTSRQ612', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (112, N'DEVL_ONDEMAND_DTSRQ717', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (113, N'DEVL_ONDEMAND_DTSRQ718', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (114, N'DEVL_ONDEMAND_DTSRQ720', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (115, N'DEVL_ONDEMAND_DTSRQ721', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (116, N'DEVL_ONDEMAND_DTSRT715', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (117, N'DEVL_ONDEMAND_DTSRT716', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (118, N'DEVL_ONDEMAND_DTSRT717', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (119, N'DEVL_ONDEMAND_DTSRT718', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (120, N'DEVL_ONDEMAND_DTSRT719', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (121, N'DEVL_ONDEMAND_DTSRT720', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (122, N'DEVL_ONDEMAND_DTSRT722', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (123, N'DEVL_ONDEMAND_DTSRT723', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (124, N'DEVL_YEARLY_DTSRQ722', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (125, N'DEVL_YEARLY_DTSRQ451', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (126, N'DEVL_YEARLY_DTSRQ127', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (127, N'DEVL_YEARLY_DTSRQ321', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (128, N'DEVL_YEARLY_DTSRQ455', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (129, N'DEVL_YEARLY_DTSRQ500', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (130, N'DEVL_YEARLY_DTSRQ517', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (131, N'DEVL_YEARLY_DTSRQ518', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (132, N'DEVL_YEARLY_DTSRQ616', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (133, N'DEVL_YEARLY_DTSRQ701', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (134, N'DEVL_YEARLY_DTSRQ702', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (135, N'DEVL_YEARLY_DTSRQ704', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL) -INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (136, N'DEVL_YEARLY_DTSRQ910', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL) -GO -SET IDENTITY_INSERT [dbo].[JobControl] OFF -GO \ No newline at end of file diff --git a/SQLAgent/01_Devl/1_Database_Setup/InsertJobDependencies.sql b/SQLAgent/01_Devl/1_Database_Setup/InsertJobDependencies.sql deleted file mode 100644 index 60d5179..0000000 --- a/SQLAgent/01_Devl/1_Database_Setup/InsertJobDependencies.sql +++ /dev/null @@ -1,92 +0,0 @@ -USE [DevlDUTASJobSchedule] -GO -SET IDENTITY_INSERT [dbo].[JobDependencies] ON -GO -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (1, N'DEVL_DAILY_DTSGSID0', N'DEVL_DAILY_DTSBX305') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (2, N'DEVL_DAILY_GSIRQ300', N'DEVL_DAILY_DTSBX305') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (3, N'DEVL_DAILY_DTSRQ202', N'DEVL_DAILY_GSIRQ300') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (4, N'DEVL_DAILY_DTSGSID1', N'DEVL_DAILY_GSIRQ300') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (5, N'DEVL_DAILY_DTSBX202', N'DEVL_DAILY_GSIRQ300') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (6, N'DEVL_DAILY_DTSFT202', N'DEVL_DAILY_GSIRQ300') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (7, N'DEVL_DAILY_DTSBX432', N'DEVL_DAILY_GSIRQ300') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (8, N'DEVL_DAILY_DTSGACHD', N'DEVL_DAILY_GSIRQ300') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (9, N'DEVL_DAILY_DTSBX303', N'DEVL_DAILY_GSIRQ300') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (10, N'DEVL_DAILY_DTSGWAGE', N'DEVL_DAILY_GSIRQ300') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (11, N'DEVL_DAILY_DTSGCHKS', N'DEVL_DAILY_GSIRQ300') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (12, N'DEVL_DAILY_DTSESDAY', N'DEVL_DAILY_GSIRQ300') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (13, N'DEVL_DAILY_DTSGPAYT', N'DEVL_DAILY_GSIRQ300') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (14, N'DEVL_DAILY_DTSDX145', N'DEVL_DAILY_GSIRQ300') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (15, N'DEVL_DAILY_DTSBX629', N'DEVL_DAILY_GSIRQ300') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (16, N'DEVL_DAILY_DTSBX630', N'DEVL_DAILY_DTSBX629') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (17, N'DEVL_DAILY_DTSFRAUD', N'DEVL_DAILY_DTSBX629') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (18, N'DEVL_DAILY_DTSRACHD', N'DEVL_DAILY_DTSFRAUD') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (19, N'DEVL_DAILY_DTSBXACH', N'DEVL_DAILY_DTSFRAUD') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (20, N'DEVL_DAILY_DTSBXREG', N'DEVL_DAILY_DTSFRAUD') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (21, N'DEVL_DAILY_DTSBX430', N'DEVL_DAILY_DTSFRAUD') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (22, N'DEVL_DAILY_DTSBX626', N'DEVL_DAILY_DTSFRAUD') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (23, N'DEVL_DAILY_DTSBX530', N'DEVL_DAILY_DTSFRAUD') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (24, N'DEVL_DAILY_DTSBXREL', N'DEVL_DAILY_DTSFRAUD') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (25, N'DEVL_DAILY_DTSBX450', N'DEVL_DAILY_DTSBXACH') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (26, N'DEVL_DAILY_DTSBX450', N'DEVL_DAILY_DTSBXREG') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (27, N'DEVL_DAILY_DTSBX450', N'DEVL_DAILY_DTSBX430') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (28, N'DEVL_DAILY_DTSBX450', N'DEVL_DAILY_DTSBX626') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (29, N'DEVL_DAILY_DTSBX450', N'DEVL_DAILY_DTSBX530') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (30, N'DEVL_DAILY_DTSBX450', N'DEVL_DAILY_DTSBXREL') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (31, N'DEVL_DAILY_DTSBX451', N'DEVL_DAILY_DTSBXACH') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (32, N'DEVL_DAILY_DTSBX451', N'DEVL_DAILY_DTSBXREG') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (33, N'DEVL_DAILY_DTSBX451', N'DEVL_DAILY_DTSBX430') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (34, N'DEVL_DAILY_DTSBX451', N'DEVL_DAILY_DTSBX626') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (35, N'DEVL_DAILY_DTSBX451', N'DEVL_DAILY_DTSBX530') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (36, N'DEVL_DAILY_DTSBX451', N'DEVL_DAILY_DTSBXREL') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (37, N'DEVL_DAILY_DTSPACHD', N'DEVL_DAILY_DTSBX450') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (38, N'DEVL_DAILY_DTSPACHD', N'DEVL_DAILY_DTSBX451') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (39, N'DEVL_DAILY_DTSPX148', N'DEVL_DAILY_DTSPACHD') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (40, N'DEVL_DAILY_DTSRQ325', N'DEVL_DAILY_DTSPACHD') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (41, N'DEVL_DAILY_DTSBX427', N'DEVL_DAILY_DTSPX148') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (42, N'DEVL_DAILY_DTSBX427', N'DEVL_DAILY_DTSRQ325') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (43, N'DEVL_DAILY_DTSPDAY1', N'DEVL_DAILY_DTSBX427') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (44, N'DEVL_DAILY_DTSW4WGE', N'DEVL_DAILY_DTSPDAY1') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (45, N'DEVL_DAILY_DTSGSID2', N'DEVL_DAILY_DTSPDAY1') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (46, N'DEVL_DAILY_DTSGSID9', N'DEVL_DAILY_DTSPDAY1') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (47, N'DEVL_DAILY_DTSMIN01', N'DEVL_DAILY_DTSW4WGE') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (48, N'DEVL_DAILY_DTSMIN01', N'DEVL_DAILY_DTSGSID2') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (49, N'DEVL_DAILY_DTSMIN01', N'DEVL_DAILY_DTSGSID9') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (50, N'DEVL_DAILY_DTSMIN02', N'DEVL_DAILY_DTSW4WGE') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (51, N'DEVL_DAILY_DTSMIN02', N'DEVL_DAILY_DTSGSID2') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (52, N'DEVL_DAILY_DTSMIN02', N'DEVL_DAILY_DTSGSID9') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (53, N'DEVL_DAILY_DTSRQ459', N'DEVL_DAILY_DTSMIN01') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (54, N'DEVL_DAILY_DTSRQ459', N'DEVL_DAILY_DTSMIN02') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (55, N'DEVL_DAILY_DTSBXPFL', N'DEVL_DAILY_DTSRQ459') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (56, N'DEVL_DAILY_DESBD427', N'DEVL_DAILY_DTSBXPFL') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (57, N'DEVL_DAILY_DTSBX403', N'DEVL_DAILY_DTSBXPFL') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (58, N'DEVL_DAILY_DTSBE405', N'DEVL_DAILY_DTSBXPFL') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (59, N'DEVL_DAILY_DTSBX405', N'DEVL_DAILY_DTSBXPFL') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (60, N'DEVL_DAILY_DTSRQ335', N'DEVL_DAILY_DTSBXPFL') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (61, N'DEVL_DAILY_DTSBX601', N'DEVL_DAILY_DTSRQ335') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (62, N'DEVL_WEEKLY_DTSBXREJ', N'DEVL_DAILY_DTSBXREL') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (63, N'DEVL_WEEKLY_DTSBX122', N'DEVL_WEEKLY_DTSPDAY7') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (64, N'DEVL_WEEKLY_DTSRQ511', N'DEVL_WEEKLY_DTSPDAY7') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (65, N'DEVL_MONTHLY_DTSRQ414', N'DEVL_DAILY_DTSPDAY1') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (66, N'DEVL_MONTHLY_DTSCHGVB', N'DEVL_MONTHLY_DTSPMON1') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (67, N'DEVL_MONTHLY_DTSCHGVR', N'DEVL_MONTHLY_DTSCHGVB') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (68, N'DEVL_MONTHLY_DTSVBKUP', N'DEVL_MONTHLY_DTSPMON1') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (69, N'DEVL_MONTHLY_DTSVRSTR', N'DEVL_MONTHLY_DTSVBKUP') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (70, N'DEVL_MONTHLY_DTSRQ442', N'DEVL_MONTHLY_DTSRQ513') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (71, N'DEVL_QUARTERLY_DTSRQ119', N'DEVL_DAILY_DTSRQ325') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (72, N'DEVL_QUARTERLY_DTSRQ417', N'DEVL_DAILY_DTSRQ325') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (73, N'DEVL_QUARTERLY_DTSRQ320', N'DEVL_DAILY_DTSRQ325') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (74, N'DEVL_QUARTERLY_DTSRQ793', N'DEVL_DAILY_DTSRQ325') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (75, N'DEVL_QUARTERLY_DTSCHGQ1', N'DEVL_DAILY_DTSRQ325') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (76, N'DEVL_QUARTERLY_DTSRQ327', N'DEVL_DAILY_DTSRQ325') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (77, N'DEVL_QUARTERLY_DTSRQ412', N'DEVL_DAILY_DTSRQ325') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (78, N'DEVL_QUARTERLY_DTSRQ591', N'DEVL_DAILY_DTSRQ325') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (79, N'DEVL_QUARTERLY_DTSRQ902', N'DEVL_DAILY_DTSPDAY1') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (80, N'DEVL_QUARTERLY_DTSCHGQ2', N'DEVL_DAILY_DTSPDAY1') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (81, N'DEVL_QUARTERLY_DTSCHGRT', N'DEVL_QUARTERLY_DTSRQ591') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (82, N'DEVL_QUARTERLY_DTSRQ328', N'DEVL_QUARTERLY_DTSRQ327') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (83, N'DEVL_QUARTERLY_DTSBX500', N'DEVL_QUARTERLY_DTSRQ417') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (84, N'DEVL_QUARTERLY_DTSRQ713', N'DEVL_MONTHLY_DTSPMON1') -INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (85, N'DEVL_QUARTERLY_DTSCHRGS', N'DEVL_QUARTERLY_DTSCHGRT') -GO -SET IDENTITY_INSERT [dbo].[JobDependencies] OFF -GO diff --git a/SQLAgent/01_Devl/2_Functions/fn_GetNextWorkday.sql b/SQLAgent/01_Devl/2_Functions/fn_GetNextWorkday.sql deleted file mode 100644 index 6a8740a..0000000 --- a/SQLAgent/01_Devl/2_Functions/fn_GetNextWorkday.sql +++ /dev/null @@ -1,17 +0,0 @@ -USE DevlDUTASJobSchedule; -GO --- Returns the next valid workday on or after the given date -CREATE OR ALTER FUNCTION dbo.fn_GetNextWorkday (@InputDate DATE) -RETURNS DATE -AS -BEGIN - DECLARE @Workday DATE = @InputDate; - - WHILE DATENAME(WEEKDAY, @Workday) IN ('Saturday','Sunday') - OR EXISTS (SELECT 1 FROM dbo.FederalHolidays WHERE HolidayDate = @Workday) - BEGIN - SET @Workday = DATEADD(DAY, 1, @Workday); - END - - RETURN @Workday; -END; diff --git a/SQLAgent/01_Devl/2_Functions/fn_GetPreviousWorkday.sql b/SQLAgent/01_Devl/2_Functions/fn_GetPreviousWorkday.sql deleted file mode 100644 index dc06a91..0000000 --- a/SQLAgent/01_Devl/2_Functions/fn_GetPreviousWorkday.sql +++ /dev/null @@ -1,17 +0,0 @@ -USE DevlDUTASJobSchedule; -GO --- Returns the most recent valid workday before or equal to the given date -CREATE OR ALTER FUNCTION dbo.fn_GetPreviousWorkday (@InputDate DATE) -RETURNS DATE -AS -BEGIN - DECLARE @Workday DATE = @InputDate; - - WHILE DATENAME(WEEKDAY, @Workday) IN ('Saturday','Sunday') - OR EXISTS (SELECT 1 FROM dbo.FederalHolidays WHERE HolidayDate = @Workday) - BEGIN - SET @Workday = DATEADD(DAY, -1, @Workday); - END - - RETURN @Workday; -END; diff --git a/SQLAgent/01_Devl/2_Stored_Procedures/usp_CheckJobConditions.sql b/SQLAgent/01_Devl/2_Stored_Procedures/usp_CheckJobConditions.sql deleted file mode 100644 index 6711343..0000000 Binary files a/SQLAgent/01_Devl/2_Stored_Procedures/usp_CheckJobConditions.sql and /dev/null differ diff --git a/SQLAgent/01_Devl/2_Stored_Procedures/usp_CheckJobConditions_Generic.sql b/SQLAgent/01_Devl/2_Stored_Procedures/usp_CheckJobConditions_Generic.sql deleted file mode 100644 index 453879f..0000000 Binary files a/SQLAgent/01_Devl/2_Stored_Procedures/usp_CheckJobConditions_Generic.sql and /dev/null differ diff --git a/SQLAgent/01_Devl/2_Stored_Procedures/usp_CreateSQLAgentJob.sql b/SQLAgent/01_Devl/2_Stored_Procedures/usp_CreateSQLAgentJob.sql deleted file mode 100644 index f6702a8..0000000 Binary files a/SQLAgent/01_Devl/2_Stored_Procedures/usp_CreateSQLAgentJob.sql and /dev/null differ diff --git a/SQLAgent/01_Devl/2_Stored_Procedures/usp_ForceComplete.sql b/SQLAgent/01_Devl/2_Stored_Procedures/usp_ForceComplete.sql deleted file mode 100644 index 66a3d0d..0000000 Binary files a/SQLAgent/01_Devl/2_Stored_Procedures/usp_ForceComplete.sql and /dev/null differ diff --git a/SQLAgent/01_Devl/2_Stored_Procedures/usp_ScheduleMonthlyJob.sql b/SQLAgent/01_Devl/2_Stored_Procedures/usp_ScheduleMonthlyJob.sql deleted file mode 100644 index 37709c5..0000000 Binary files a/SQLAgent/01_Devl/2_Stored_Procedures/usp_ScheduleMonthlyJob.sql and /dev/null differ diff --git a/SQLAgent/01_Devl/2_Stored_Procedures/usp_TriggerMissedJobs.sql b/SQLAgent/01_Devl/2_Stored_Procedures/usp_TriggerMissedJobs.sql deleted file mode 100644 index 0176424..0000000 Binary files a/SQLAgent/01_Devl/2_Stored_Procedures/usp_TriggerMissedJobs.sql and /dev/null differ diff --git a/SQLAgent/01_Devl/2_Stored_Procedures/usp_UpdateJobStatus_Generic.sql b/SQLAgent/01_Devl/2_Stored_Procedures/usp_UpdateJobStatus_Generic.sql deleted file mode 100644 index 959016b..0000000 Binary files a/SQLAgent/01_Devl/2_Stored_Procedures/usp_UpdateJobStatus_Generic.sql and /dev/null differ diff --git a/SQLAgent/01_Devl/3_Job_Maintenance/ActivateMonthlyJob.sql b/SQLAgent/01_Devl/3_Job_Maintenance/ActivateMonthlyJob.sql deleted file mode 100644 index 087d3fe..0000000 --- a/SQLAgent/01_Devl/3_Job_Maintenance/ActivateMonthlyJob.sql +++ /dev/null @@ -1,65 +0,0 @@ -USE msdb; -GO - --- Schedule DEVL Monthly Jobs for October 2025 ------------------------------------------------- -EXEC dbo.usp_ScheduleMonthlyJob - @JobName='DEVL_MONTHLY_DTSRQ414', - @Env='DEVL', - @RunDate='2025-11-03', - @RunTime='18:15:00'; - -EXEC dbo.usp_ScheduleMonthlyJob - @JobName='DEVL_MONTHLY_DTSPMON1', - @Env='DEVL', - @RunDate='2025-10-31', - @RunTime='19:15:00'; - -EXEC dbo.usp_ScheduleMonthlyJob - @JobName='DEVL_MONTHLY_DTSCHGVB', - @Env='DEVL', - @RunDate='2025-10-31', - @RunTime='19:26:00'; - -EXEC dbo.usp_ScheduleMonthlyJob - @JobName='DEVL_MONTHLY_DTSCHGVR', - @Env='DEVL', - @RunDate='2025-10-31', - @RunTime='19:27:00'; - -EXEC dbo.usp_ScheduleMonthlyJob - @JobName='DEVL_MONTHLY_DTSVBKUP', - @Env='DEVL', - @RunDate='2025-10-31', - @RunTime='19:26:00'; - -EXEC dbo.usp_ScheduleMonthlyJob - @JobName='DEVL_MONTHLY_DTSVRSTR', - @Env='DEVL', - @RunDate='2025-10-31', - @RunTime='19:30:00'; - -EXEC dbo.usp_ScheduleMonthlyJob - @JobName='DEVL_MONTHLY_DTSRQ442', - @Env='DEVL', - @RunDate='2025-10-31', - @RunTime='19:37:00'; - -EXEC dbo.usp_ScheduleMonthlyJob - @JobName='DEVL_MONTHLY_DTSBX460', - @Env='DEVL', - @RunDate='2025-10-31', - @RunTime='19:35:00'; - -EXEC dbo.usp_ScheduleMonthlyJob - @JobName='DEVL_MONTHLY_DTSRQ513', - @Env='DEVL', - @RunDate='2025-10-31', - @RunTime='19:37:00'; - -EXEC dbo.usp_ScheduleMonthlyJob - @JobName='DEVL_MONTHLY_DTSCHGDC', - @Env='DEVL', - @RunDate='2025-11-03', - @RunTime='13:00:00'; -GO diff --git a/SQLAgent/01_Devl/3_Job_Maintenance/AddDailyJobs.sql b/SQLAgent/01_Devl/3_Job_Maintenance/AddDailyJobs.sql deleted file mode 100644 index 88698c8..0000000 --- a/SQLAgent/01_Devl/3_Job_Maintenance/AddDailyJobs.sql +++ /dev/null @@ -1,279 +0,0 @@ -USE [msdb] -GO - --- Execute the stored procedure for each job -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSBX215', - @StartTimeHHMMSS = 40000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSBX305', - @StartTimeHHMMSS = 40000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSGSID0', - @StartTimeHHMMSS = 60000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_GSIRQ300', - @StartTimeHHMMSS = 60500, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSRQ202', - @StartTimeHHMMSS = 61000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSGSID1', - @StartTimeHHMMSS = 61500, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSBX202', - @StartTimeHHMMSS = 70000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSFT202', - @StartTimeHHMMSS = 80000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSBX432', - @StartTimeHHMMSS = 83000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSGACHD', - @StartTimeHHMMSS = 90000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSBX303', - @StartTimeHHMMSS = 100000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSGWAGE', - @StartTimeHHMMSS = 140000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSGCHKS', - @StartTimeHHMMSS = 140500, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSESDAY', - @StartTimeHHMMSS = 140500, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSGPAYT', - @StartTimeHHMMSS = 141000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSDX145', - @StartTimeHHMMSS = 160500, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSBX629', - @StartTimeHHMMSS = 161500, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSBX630', - @StartTimeHHMMSS = 163000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSFRAUD', - @StartTimeHHMMSS = 163000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSRACHD', - @StartTimeHHMMSS = 170000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSBXACH', - @StartTimeHHMMSS = 170000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSBXREG', - @StartTimeHHMMSS = 170000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSBX430', - @StartTimeHHMMSS = 170000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSBX626', - @StartTimeHHMMSS = 170000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSBX530', - @StartTimeHHMMSS = 170000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSBXREL', - @StartTimeHHMMSS = 170000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSBX450', - @StartTimeHHMMSS = 171500, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSBX451', - @StartTimeHHMMSS = 171500, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSPACHD', - @StartTimeHHMMSS = 180000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSPX148', - @StartTimeHHMMSS = 180500, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSRQ325', - @StartTimeHHMMSS = 180500, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSBX427', - @StartTimeHHMMSS = 180700, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSPDAY1', - @StartTimeHHMMSS = 181000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSW4WGE', - @StartTimeHHMMSS = 181500, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSGSID2', - @StartTimeHHMMSS = 181500, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSGSID9', - @StartTimeHHMMSS = 181500, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSMIN01', - @StartTimeHHMMSS = 182000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSMIN02', - @StartTimeHHMMSS = 182000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSRQ459', - @StartTimeHHMMSS = 190000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSBXPFL', - @StartTimeHHMMSS = 190000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DESBD427', - @StartTimeHHMMSS = 190500, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSBX403', - @StartTimeHHMMSS = 200000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSBE405', - @StartTimeHHMMSS = 201500, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSBX405', - @StartTimeHHMMSS = 201500, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSRQ335', - @StartTimeHHMMSS = 210000, - @Env = 'DEVL', - @Frequency = 'DAILY'; - -EXEC [dbo].[usp_CreateSQLAgentJob] - @JobName = 'DEVL_DAILY_DTSBX601', - @StartTimeHHMMSS = 212500, - @Env = 'DEVL', - @Frequency = 'DAILY'; \ No newline at end of file diff --git a/SQLAgent/01_Devl/3_Job_Maintenance/AddMonthlyJobs.sql b/SQLAgent/01_Devl/3_Job_Maintenance/AddMonthlyJobs.sql deleted file mode 100644 index 99d7f1a..0000000 --- a/SQLAgent/01_Devl/3_Job_Maintenance/AddMonthlyJobs.sql +++ /dev/null @@ -1,76 +0,0 @@ -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 = 'DEVL_MONTHLY_DTSRQ414', - @StartTimeHHMMSS = 181500, - @Env = 'DEVL', - @Frequency = 'MONTHLY'; - --- 2. -EXEC dbo.usp_CreateSQLAgentJob - @JobName = 'DEVL_MONTHLY_DTSPMON1', - @StartTimeHHMMSS = 191500, - @Env = 'DEVL', - @Frequency = 'MONTHLY'; - --- 3. -EXEC dbo.usp_CreateSQLAgentJob - @JobName = 'DEVL_MONTHLY_DTSCHGVB', - @StartTimeHHMMSS = 192600, - @Env = 'DEVL', - @Frequency = 'MONTHLY'; - --- 4. -EXEC dbo.usp_CreateSQLAgentJob - @JobName = 'DEVL_MONTHLY_DTSCHGVR', - @StartTimeHHMMSS = 192700, - @Env = 'DEVL', - @Frequency = 'MONTHLY'; - --- 5. -EXEC dbo.usp_CreateSQLAgentJob - @JobName = 'DEVL_MONTHLY_DTSVBKUP', - @StartTimeHHMMSS = 192600, - @Env = 'DEVL', - @Frequency = 'MONTHLY'; - --- 6. -EXEC dbo.usp_CreateSQLAgentJob - @JobName = 'DEVL_MONTHLY_DTSVRSTR', - @StartTimeHHMMSS = 193000, - @Env = 'DEVL', - @Frequency = 'MONTHLY'; - --- 7. -EXEC dbo.usp_CreateSQLAgentJob - @JobName = 'DEVL_MONTHLY_DTSRQ442', - @StartTimeHHMMSS = 193700, - @Env = 'DEVL', - @Frequency = 'MONTHLY'; - --- 8. -EXEC dbo.usp_CreateSQLAgentJob - @JobName = 'DEVL_MONTHLY_DTSBX460', - @StartTimeHHMMSS = 193500, - @Env = 'DEVL', - @Frequency = 'MONTHLY'; - --- 9. -EXEC dbo.usp_CreateSQLAgentJob - @JobName = 'DEVL_MONTHLY_DTSRQ513', - @StartTimeHHMMSS = 193700, - @Env = 'DEVL', - @Frequency = 'MONTHLY'; - --- 10. -EXEC dbo.usp_CreateSQLAgentJob - @JobName = 'DEVL_MONTHLY_DTSCHGDC', - @StartTimeHHMMSS = 130000, - @Env = 'DEVL', - @Frequency = 'MONTHLY'; -GO diff --git a/SQLAgent/01_Devl/3_Job_Maintenance/AddOneJob.sql b/SQLAgent/01_Devl/3_Job_Maintenance/AddOneJob.sql deleted file mode 100644 index a86e6b9..0000000 --- a/SQLAgent/01_Devl/3_Job_Maintenance/AddOneJob.sql +++ /dev/null @@ -1,9 +0,0 @@ -USE [msdb] -GO - --- Create a job that runs Monday-Friday at 4:00 AM -EXEC dbo.usp_CreateSQLAgentJob - @JobName = 'DEVL_DAILY_DTSBX215', - @StartTimeHHMMSS = 40000, -- For 4:00:00 AM (143000 for 2:30:00 PM) - @Env = 'DEVL', - @Frequency = 'DAILY'; \ No newline at end of file diff --git a/SQLAgent/01_Devl/3_Job_Maintenance/AddWeeklyJobs.sql b/SQLAgent/01_Devl/3_Job_Maintenance/AddWeeklyJobs.sql deleted file mode 100644 index 30a3338..0000000 --- a/SQLAgent/01_Devl/3_Job_Maintenance/AddWeeklyJobs.sql +++ /dev/null @@ -1,81 +0,0 @@ -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 = 'DEVL_WEEKLY_DTSGSID0', - @StartTimeHHMMSS = 60000, - @Env = 'DEVL', - @Frequency = 'WEEKLY'; - --- 2. -EXEC dbo.usp_CreateSQLAgentJob - @JobName = 'DEVL_WEEKLY_DTSGSID1', - @StartTimeHHMMSS = 61500, - @Env = 'DEVL', - @Frequency = 'WEEKLY'; - --- 3. -EXEC dbo.usp_CreateSQLAgentJob - @JobName = 'DEVL_WEEKLY_DTSBX202', - @StartTimeHHMMSS = 70000, - @Env = 'DEVL', - @Frequency = 'WEEKLY'; - --- 4. -EXEC dbo.usp_CreateSQLAgentJob - @JobName = 'DEVL_WEEKLY_DTSFT202', - @StartTimeHHMMSS = 80000, - @Env = 'DEVL', - @Frequency = 'WEEKLY'; - --- 5. -EXEC dbo.usp_CreateSQLAgentJob - @JobName = 'DEVL_WEEKLY_DTSBX470', - @StartTimeHHMMSS = 70000, - @Env = 'DEVL', - @Frequency = 'WEEKLY'; - --- 6. -EXEC dbo.usp_CreateSQLAgentJob - @JobName = 'DEVL_WEEKLY_DTSBXREJ', - @StartTimeHHMMSS = 170000, - @Env = 'DEVL', - @Frequency = 'WEEKLY'; - --- 7. -EXEC dbo.usp_CreateSQLAgentJob - @JobName = 'DEVL_WEEKLY_DTSPDAY7', - @StartTimeHHMMSS = 191000, - @Env = 'DEVL', - @Frequency = 'WEEKLY'; - --- 8. -EXEC dbo.usp_CreateSQLAgentJob - @JobName = 'DEVL_WEEKLY_DTSBX122', - @StartTimeHHMMSS = 191400, - @Env = 'DEVL', - @Frequency = 'WEEKLY'; - --- 9. -EXEC dbo.usp_CreateSQLAgentJob - @JobName = 'DEVL_WEEKLY_DTSRQ511', - @StartTimeHHMMSS = 191400, - @Env = 'DEVL', - @Frequency = 'WEEKLY'; - --- 10. -EXEC dbo.usp_CreateSQLAgentJob - @JobName = 'DEVL_WEEKLY_DTSRQ444', - @StartTimeHHMMSS = 70000, - @Env = 'DEVL', - @Frequency = 'WEEKLY'; - --- 11. -EXEC dbo.usp_CreateSQLAgentJob - @JobName = 'DEVL_WEEKLY_DTSRQ126', - @StartTimeHHMMSS = 90000, - @Env = 'DEVL', - @Frequency = 'WEEKLY'; \ No newline at end of file diff --git a/SQLAgent/01_Devl/3_Job_Maintenance/DailyJobScheduleLookup.sql b/SQLAgent/01_Devl/3_Job_Maintenance/DailyJobScheduleLookup.sql deleted file mode 100644 index b893457..0000000 --- a/SQLAgent/01_Devl/3_Job_Maintenance/DailyJobScheduleLookup.sql +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************************************** - 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: - • Uses MSDB’s internal schedule definitions (sysschedules, sysjobschedules). - • Supports One-time, Daily, Weekly, and Monthly schedule types. - • 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 = 'DEVL'; -- Change for TEST 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 diff --git a/SQLAgent/01_Devl/3_Job_Maintenance/DeactivateMonthlyJob.sql b/SQLAgent/01_Devl/3_Job_Maintenance/DeactivateMonthlyJob.sql deleted file mode 100644 index 3822af3..0000000 --- a/SQLAgent/01_Devl/3_Job_Maintenance/DeactivateMonthlyJob.sql +++ /dev/null @@ -1,12 +0,0 @@ -USE DevlDUTASJobSchedule; -GO - -UPDATE dbo.JobControl -SET IsActive = 0 -WHERE Frequency = 'MONTHLY'; -GO - --- Optional: Verify changes -SELECT JobName, Frequency, IsActive -FROM dbo.JobControl -WHERE Frequency = 'MONTHLY'; diff --git a/SQLAgent/01_Devl/3_Job_Maintenance/DetachDeleteScheduleByName.sql b/SQLAgent/01_Devl/3_Job_Maintenance/DetachDeleteScheduleByName.sql deleted file mode 100644 index c337e5e..0000000 --- a/SQLAgent/01_Devl/3_Job_Maintenance/DetachDeleteScheduleByName.sql +++ /dev/null @@ -1,13 +0,0 @@ --- If you know both the job name and schedule name -DECLARE @JobName NVARCHAR(100) = 'DEVL_MONTHLY_DTSCHGDC'; -DECLARE @ScheduleName NVARCHAR(200) = 'DEVL_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; diff --git a/SQLAgent/01_Devl/3_Job_Maintenance/ForceCompleteJob.sql b/SQLAgent/01_Devl/3_Job_Maintenance/ForceCompleteJob.sql deleted file mode 100644 index 9add511..0000000 --- a/SQLAgent/01_Devl/3_Job_Maintenance/ForceCompleteJob.sql +++ /dev/null @@ -1,16 +0,0 @@ -USE DevlDUTASJobSchedule; -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); \ No newline at end of file diff --git a/SQLAgent/01_Devl/3_Job_Maintenance/JobInfo.sql b/SQLAgent/01_Devl/3_Job_Maintenance/JobInfo.sql deleted file mode 100644 index 426e047..0000000 --- a/SQLAgent/01_Devl/3_Job_Maintenance/JobInfo.sql +++ /dev/null @@ -1,47 +0,0 @@ -USE msdb; -GO - -PRINT '================================================================================'; -PRINT 'SECTION 1: JOB CONTROL INFORMATION'; -PRINT '================================================================================'; -GO - --- View all active jobs -SELECT JobName, ScheduledStartTime, Frequency, IsActive -FROM DevlDUTASJobSchedule.dbo.JobControl -WHERE IsActive = 1 -ORDER BY Frequency, ScheduledStartTime; -GO - --- View all inactive jobs -SELECT JobName, Frequency, ScheduledStartTime -FROM DevlDUTASJobSchedule.dbo.JobControl -WHERE IsActive = 0 -ORDER BY Frequency; -GO - --- Find weekly/monthly jobs -SELECT JobName, Frequency, ScheduledStartTime -FROM DevlDUTASJobSchedule.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) = 'DEVL_MONTHLY_DTSCHGVR'; -SELECT JobName, PredecessorJobName -FROM DevlDUTASJobSchedule.dbo.JobDependencies -WHERE JobName = @Job; -GO - --- Show dependency chain overview -SELECT d.JobName, d.PredecessorJobName, jc.ScheduledStartTime, jc.Frequency -FROM DevlDUTASJobSchedule.dbo.JobDependencies d -JOIN DevlDUTASJobSchedule.dbo.JobControl jc ON d.JobName = jc.JobName -ORDER BY jc.Frequency, jc.ScheduledStartTime; -GO diff --git a/SQLAgent/01_Devl/3_Job_Maintenance/SQLAgentInfo.sql b/SQLAgent/01_Devl/3_Job_Maintenance/SQLAgentInfo.sql deleted file mode 100644 index d63458e..0000000 --- a/SQLAgent/01_Devl/3_Job_Maintenance/SQLAgentInfo.sql +++ /dev/null @@ -1,42 +0,0 @@ -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 \ No newline at end of file diff --git a/SQLAgent/01_Devl/3_Job_Maintenance/TodaysExecution.sql b/SQLAgent/01_Devl/3_Job_Maintenance/TodaysExecution.sql deleted file mode 100644 index 3480fdd..0000000 --- a/SQLAgent/01_Devl/3_Job_Maintenance/TodaysExecution.sql +++ /dev/null @@ -1,21 +0,0 @@ -USE DevlDUTASJobSchedule; -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; diff --git a/SQLAgent/01_Devl/3_Job_Maintenance/TriggerMissedJob.sql b/SQLAgent/01_Devl/3_Job_Maintenance/TriggerMissedJob.sql deleted file mode 100644 index c2f3e90..0000000 --- a/SQLAgent/01_Devl/3_Job_Maintenance/TriggerMissedJob.sql +++ /dev/null @@ -1,9 +0,0 @@ -USE [DevlDUTASJobSchedule] -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; - diff --git a/SQLAgent/01_Devl/3_Stored_Procedures/usp_CheckJobConditions.sql b/SQLAgent/01_Devl/3_Stored_Procedures/usp_CheckJobConditions.sql deleted file mode 100644 index 6711343..0000000 Binary files a/SQLAgent/01_Devl/3_Stored_Procedures/usp_CheckJobConditions.sql and /dev/null differ diff --git a/SQLAgent/01_Devl/3_Stored_Procedures/usp_CheckJobConditions_Generic.sql b/SQLAgent/01_Devl/3_Stored_Procedures/usp_CheckJobConditions_Generic.sql deleted file mode 100644 index 453879f..0000000 Binary files a/SQLAgent/01_Devl/3_Stored_Procedures/usp_CheckJobConditions_Generic.sql and /dev/null differ diff --git a/SQLAgent/01_Devl/3_Stored_Procedures/usp_CreateDailyJobSchedule.sql b/SQLAgent/01_Devl/3_Stored_Procedures/usp_CreateDailyJobSchedule.sql deleted file mode 100644 index c2cd1ea..0000000 --- a/SQLAgent/01_Devl/3_Stored_Procedures/usp_CreateDailyJobSchedule.sql +++ /dev/null @@ -1,98 +0,0 @@ -USE msdb; -GO - -CREATE OR ALTER PROCEDURE dbo.usp_CreateDailyJobSchedule - @Env VARCHAR(10) = 'DEVL' -- Added parameter with default value -AS -BEGIN - SET NOCOUNT ON; - - DECLARE - @JobID INT, - @JobName SYSNAME, - @ScheduledStartTime TIME(0), - @Frequency NVARCHAR(20), - @FrequencyPattern NVARCHAR(MAX), - @ScheduleName SYSNAME, - @StartTimeInt INT, - @FreqInterval INT, - @TimeString VARCHAR(8), - @ActiveStartDate INT, - @dbName SYSNAME; -- Added variable for database name - - -- Determine database name based on environment - SET @dbName = CASE @Env - WHEN 'DEVL' THEN 'DevlDUTASJobSchedule' - WHEN 'TEST' THEN 'TestDUTASJobSchedule' - WHEN 'PROD' THEN 'ProdDUTASJobSchedule' - END; - - -- Prepare active start date as INT (YYYYMMDD) - SET @ActiveStartDate = CONVERT(INT, CONVERT(CHAR(8), GETDATE(), 112)); - - -- Dynamic SQL to fetch jobs from the appropriate database - DECLARE @Sql NVARCHAR(MAX); - SET @Sql = N' - DECLARE job_cursor CURSOR FOR - SELECT JobID, JobName, ScheduledStartTime, Frequency, FrequencyPattern - FROM ' + QUOTENAME(@dbName) + N'.dbo.JobControl - WHERE UPPER(Frequency) = ''DAILY'' - AND IsActive = 1;'; - - -- Execute dynamic SQL to declare cursor - EXEC sp_executesql @Sql; - - OPEN job_cursor; - FETCH NEXT FROM job_cursor INTO @JobID, @JobName, @ScheduledStartTime, @Frequency, @FrequencyPattern; - - WHILE @@FETCH_STATUS = 0 - BEGIN - -- Step 1: Convert ScheduledStartTime (TIME) to HH:MM:SS string - SET @TimeString = CONVERT(VARCHAR(8), @ScheduledStartTime, 108); - - -- Step 2: Remove colons and convert to INT (HHMMSS) - SET @StartTimeInt = CONVERT(INT, REPLACE(@TimeString, ':', '')); - - -- Step 3: Prepare schedule name - SET @ScheduleName = CONCAT(@JobName, '_DailySchedule'); - - -- Step 4: Fixed freq_interval for Monday to Friday - SET @FreqInterval = 62; -- Mon(2)+Tue(4)+Wed(8)+Thu(16)+Fri(32) = 62 - - -- Step 5: Delete existing schedule if it exists (idempotency) - IF EXISTS ( - SELECT 1 - FROM msdb.dbo.sysschedules s - JOIN msdb.dbo.sysjobschedules js ON s.schedule_id = js.schedule_id - JOIN msdb.dbo.sysjobs j ON j.job_id = js.job_id - WHERE j.name = @JobName AND s.name = @ScheduleName - ) - BEGIN - EXEC msdb.dbo.sp_delete_schedule @schedule_name = @ScheduleName; - END - - -- Step 6: Create weekly schedule (Monday to Friday) running once per day - EXEC msdb.dbo.sp_add_schedule - @schedule_name = @ScheduleName, - @enabled = 1, - @freq_type = 8, -- weekly - @freq_interval = @FreqInterval, - @freq_recurrence_factor = 1, -- every week - @active_start_time = @StartTimeInt, - @active_start_date = @ActiveStartDate; - - -- Step 7: Attach schedule to job - EXEC msdb.dbo.sp_attach_schedule - @job_name = @JobName, - @schedule_name = @ScheduleName; - - -- Fetch next job - FETCH NEXT FROM job_cursor INTO @JobID, @JobName, @ScheduledStartTime, @Frequency, @FrequencyPattern; - END - - CLOSE job_cursor; - DEALLOCATE job_cursor; - - PRINT 'Daily job schedules (Monday to Friday) created successfully for ' + @dbName; -END; -GO \ No newline at end of file diff --git a/SQLAgent/01_Devl/3_Stored_Procedures/usp_CreateSQLAgentJob.sql b/SQLAgent/01_Devl/3_Stored_Procedures/usp_CreateSQLAgentJob.sql deleted file mode 100644 index cfba9e9..0000000 Binary files a/SQLAgent/01_Devl/3_Stored_Procedures/usp_CreateSQLAgentJob.sql and /dev/null differ diff --git a/SQLAgent/01_Devl/3_Stored_Procedures/usp_CreateWeeklySchedules.sql b/SQLAgent/01_Devl/3_Stored_Procedures/usp_CreateWeeklySchedules.sql deleted file mode 100644 index 2021821..0000000 --- a/SQLAgent/01_Devl/3_Stored_Procedures/usp_CreateWeeklySchedules.sql +++ /dev/null @@ -1,223 +0,0 @@ -USE [msdb]; -GO - -CREATE OR ALTER PROCEDURE dbo.usp_CreateWeeklySchedules - @Env VARCHAR(10) = 'DEVL' -- Added parameter with default value -AS -BEGIN - SET NOCOUNT ON; - - DECLARE - @JobName SYSNAME, - @FrequencyPattern NVARCHAR(MAX), - @StartTime VARCHAR(50), - @ScheduleName SYSNAME, - @StartTimeInt INT, - @FreqInterval INT, - @ActiveDate INT, - @computedFreq INT, - @dbName SYSNAME; -- Added variable for database name - - -- Determine database name based on environment - SET @dbName = CASE @Env - WHEN 'DEVL' THEN 'DevlDUTASJobSchedule' - WHEN 'TEST' THEN 'TestDUTASJobSchedule' - WHEN 'PROD' THEN 'ProdDUTASJobSchedule' - END; - - SET @ActiveDate = CONVERT(INT, CONVERT(CHAR(8), GETDATE(), 112)); - - -------------------------------------------------------------------------- - -- Dynamic SQL for cursor to fetch active weekly jobs from appropriate database - -------------------------------------------------------------------------- - DECLARE @Sql NVARCHAR(MAX); - SET @Sql = N' - DECLARE job_cursor CURSOR FAST_FORWARD FOR - SELECT - JobName, - FrequencyPattern, - ScheduledStartTime - FROM ' + QUOTENAME(@dbName) + N'.dbo.JobControl - WHERE UPPER(Frequency) = ''WEEKLY'' - AND IsActive = 1;'; - - -- Execute dynamic SQL to declare cursor - EXEC sp_executesql @Sql; - - OPEN job_cursor; - FETCH NEXT FROM job_cursor INTO @JobName, @FrequencyPattern, @StartTime; - - WHILE @@FETCH_STATUS = 0 - BEGIN - BEGIN TRY - ------------------------------------------------------------------ - -- Reset per-job variables - ------------------------------------------------------------------ - SET @FreqInterval = 0; - SET @computedFreq = 0; - SET @StartTimeInt = NULL; - SET @ScheduleName = NULL; - - ------------------------------------------------------------------ - -- Correctly format the start time (HHMMSS without extra zeros) - ------------------------------------------------------------------ - SET @StartTime = LTRIM(RTRIM(ISNULL(@StartTime, '00:00:00'))); - - -- Parse time and convert to HHMMSS integer - DECLARE @TimeParts TABLE (part NVARCHAR(10), idx INT); - INSERT INTO @TimeParts (part, idx) - SELECT value, ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) - 1 - FROM STRING_SPLIT(LEFT(@StartTime, 8), ':'); - - DECLARE @Hours INT, @Minutes INT, @Seconds INT; - - SELECT @Hours = CAST(part AS INT) FROM @TimeParts WHERE idx = 0; - SELECT @Minutes = CAST(part AS INT) FROM @TimeParts WHERE idx = 1; - SELECT @Seconds = CAST(part AS INT) FROM @TimeParts WHERE idx = 2; - - -- Ensure valid time ranges - SET @Hours = ISNULL(@Hours, 0); - SET @Minutes = ISNULL(@Minutes, 0); - SET @Seconds = ISNULL(@Seconds, 0); - - IF @Hours < 0 OR @Hours > 23 SET @Hours = 0; - IF @Minutes < 0 OR @Minutes > 59 SET @Minutes = 0; - IF @Seconds < 0 OR @Seconds > 59 SET @Seconds = 0; - - SET @StartTimeInt = (@Hours * 10000) + (@Minutes * 100) + @Seconds; - - SET @ScheduleName = CONCAT(@JobName, '_WeeklySchedule'); - - ------------------------------------------------------------------ - -- Parse JSON days using a local temporary table - ------------------------------------------------------------------ - CREATE TABLE #Days (DayName NVARCHAR(10)); - - INSERT INTO #Days (DayName) - SELECT TRIM(value) - FROM OPENJSON(ISNULL(@FrequencyPattern, '{}'), '$.Days'); - - ------------------------------------------------------------------ - -- Compute bitmask correctly (values should be 1-127) - ------------------------------------------------------------------ - SELECT @computedFreq = ISNULL(SUM( - CASE UPPER(DayName) - WHEN 'SUN' THEN 1 - WHEN 'MON' THEN 2 - WHEN 'TUE' THEN 4 - WHEN 'WED' THEN 8 - WHEN 'THU' THEN 16 - WHEN 'FRI' THEN 32 - WHEN 'SAT' THEN 64 - ELSE 0 - END - ), 0) - FROM #Days; - - DROP TABLE #Days; -- Explicitly drop the temp table - - SET @FreqInterval = ISNULL(@computedFreq, 0); - - ------------------------------------------------------------------ - -- Validate freq_interval (must be 1..127) - ------------------------------------------------------------------ - IF @FreqInterval < 1 OR @FreqInterval > 127 - BEGIN - PRINT 'Warning: Weekly job ' + @JobName + - ' has invalid freq_interval (' + ISNULL(CAST(@FreqInterval AS VARCHAR(10)), 'NULL') + - '). Days found: ' + ISNULL(@FrequencyPattern, 'None') + '. Skipping.'; - FETCH NEXT FROM job_cursor INTO @JobName, @FrequencyPattern, @StartTime; - CONTINUE; - END - - ------------------------------------------------------------------ - -- Debug output to verify calculations - ------------------------------------------------------------------ - PRINT 'Job: ' + @JobName + - ', Days: ' + @FrequencyPattern + - ', FreqInterval: ' + CAST(@FreqInterval AS VARCHAR(3)) + - ', StartTime: ' + CAST(@StartTimeInt AS VARCHAR(6)); - - ------------------------------------------------------------------ - -- Safely detach and delete any existing schedule with this name - -- Use TRY/CATCH for schedule operations since non-existence is expected - ------------------------------------------------------------------ - BEGIN TRY - DECLARE @schedule_id INT; - DECLARE @attach_count INT; - - -- Check if schedule exists and get its ID - SELECT @schedule_id = s.schedule_id - FROM msdb.dbo.sysschedules s - JOIN msdb.dbo.sysjobschedules js ON s.schedule_id = js.schedule_id - JOIN msdb.dbo.sysjobs j ON j.job_id = js.job_id - WHERE j.name = @JobName AND s.name = @ScheduleName; - - IF @schedule_id IS NOT NULL - BEGIN - -- Detach from this job (if attached) - EXEC msdb.dbo.sp_detach_schedule - @job_name = @JobName, - @schedule_name = @ScheduleName; - - -- Check if schedule still attached to other jobs - SELECT @attach_count = COUNT(*) - FROM msdb.dbo.sysjobschedules js - WHERE js.schedule_id = @schedule_id; - - IF @attach_count = 0 - BEGIN - EXEC msdb.dbo.sp_delete_schedule - @schedule_name = @ScheduleName; - PRINT 'Existing schedule deleted: ' + @ScheduleName; - END - ELSE - BEGIN - PRINT 'Notice: schedule ' + @ScheduleName + ' could not be deleted because it is still attached to other jobs.'; - END - END - END TRY - BEGIN CATCH - -- Schedule operations might fail if schedule doesn't exist, which is fine - PRINT 'Notice: ' + ERROR_MESSAGE() + ' - proceeding with new schedule creation.'; - END CATCH - - ------------------------------------------------------------------ - -- Create the unified weekly schedule with subday config - ------------------------------------------------------------------ - EXEC msdb.dbo.sp_add_schedule - @schedule_name = @ScheduleName, - @enabled = 1, - @freq_type = 8, -- Weekly - @freq_interval = @FreqInterval, -- Bitmask of weekdays - @freq_recurrence_factor = 1, -- Every week - @freq_subday_type = 1, -- Once per day - @freq_subday_interval = 1, - @active_start_time = @StartTimeInt, - @active_start_date = @ActiveDate; - - ------------------------------------------------------------------ - -- Attach the schedule to the job - ------------------------------------------------------------------ - EXEC msdb.dbo.sp_attach_schedule - @job_name = @JobName, - @schedule_name = @ScheduleName; - - PRINT 'Weekly schedule created for job: ' + @JobName + - ' (Days=' + CAST(@FreqInterval AS VARCHAR(10)) + - ', Time=' + RIGHT('000000' + CAST(@StartTimeInt AS VARCHAR(6)), 6) + ')'; - - END TRY - BEGIN CATCH - PRINT 'Error scheduling job ' + ISNULL(@JobName, 'Unknown') + ': ' + ERROR_MESSAGE(); - END CATCH; - - FETCH NEXT FROM job_cursor INTO @JobName, @FrequencyPattern, @StartTime; - END - - CLOSE job_cursor; - DEALLOCATE job_cursor; - - PRINT 'All weekly job schedules processed for ' + @dbName; -END; -GO \ No newline at end of file diff --git a/SQLAgent/01_Devl/3_Stored_Procedures/usp_ForceComplete.sql b/SQLAgent/01_Devl/3_Stored_Procedures/usp_ForceComplete.sql deleted file mode 100644 index 66a3d0d..0000000 Binary files a/SQLAgent/01_Devl/3_Stored_Procedures/usp_ForceComplete.sql and /dev/null differ diff --git a/SQLAgent/01_Devl/3_Stored_Procedures/usp_GenerateJobSchedule.sql b/SQLAgent/01_Devl/3_Stored_Procedures/usp_GenerateJobSchedule.sql deleted file mode 100644 index afd72d9..0000000 --- a/SQLAgent/01_Devl/3_Stored_Procedures/usp_GenerateJobSchedule.sql +++ /dev/null @@ -1,261 +0,0 @@ -USE [DevlDUTASJobSchedule]; -GO - -CREATE OR ALTER PROCEDURE dbo.usp_GenerateJobSchedule - @Year INT -AS -BEGIN - SET NOCOUNT ON; - - ------------------------------------------------------------------------- - -- 1. Cleanup existing schedule data for this year - ------------------------------------------------------------------------- - DELETE FROM dbo.JobSchedule WHERE YearOfSchedule = @Year; - - ------------------------------------------------------------------------- - -- 2. Variable declarations - ------------------------------------------------------------------------- - DECLARE - @JobName VARCHAR(100), - @Frequency VARCHAR(20), - @Pattern NVARCHAR(2000), - @ScheduledTime TIME, - @RuleName NVARCHAR(100), - @Month INT, - @BaseDate DATE, - @ScheduledDate DATE, - @AdjustedDate DATE, - @FailSafeDate DATE = '9999-12-31'; - - ------------------------------------------------------------------------- - -- 3. Temporary table to process jobs more efficiently - ------------------------------------------------------------------------- - CREATE TABLE #JobProcessing ( - JobName VARCHAR(100), - Frequency VARCHAR(20), - Pattern NVARCHAR(2000), - ScheduledTime TIME, - RuleName NVARCHAR(100), - MonthsJSON NVARCHAR(MAX), - DayNum INT, - HasExplicitSchedule BIT - ); - - -- Populate temporary table with parsed JSON data - INSERT INTO #JobProcessing (JobName, Frequency, Pattern, ScheduledTime, RuleName, MonthsJSON, DayNum, HasExplicitSchedule) - SELECT - jc.JobName, - jc.Frequency, - jc.FrequencyPattern, - jc.ScheduledStartTime, - JSON_VALUE(jc.FrequencyPattern, '$.Rule'), - JSON_QUERY(jc.FrequencyPattern, '$.Months'), - JSON_VALUE(jc.FrequencyPattern, '$.Day'), - CASE WHEN JSON_QUERY(jc.FrequencyPattern, '$.Schedule') IS NOT NULL THEN 1 ELSE 0 END - FROM dbo.JobControl jc - WHERE UPPER(jc.Frequency) IN ('MONTHLY','QUARTERLY') - AND jc.IsActive = 1; - - ------------------------------------------------------------------------- - -- 4. Process MONTHLY jobs - ------------------------------------------------------------------------- - INSERT INTO dbo.JobSchedule (JobName, Frequency, ScheduledRule, ScheduledDate, AdjustedRunDate, MonthOfSchedule, YearOfSchedule, CreatedOn, CreatedBy) - SELECT - jp.JobName, - jp.Frequency, - jp.Pattern, - CASE - WHEN jp.RuleName = 'FirstWorkday' THEN dbo.fn_GetNextWorkday(DATEFROMPARTS(@Year, m.MonthNum, 1)) - WHEN jp.RuleName = 'LastWorkday' THEN dbo.fn_GetPreviousWorkday(EOMONTH(DATEFROMPARTS(@Year, m.MonthNum, 1))) - ELSE @FailSafeDate - END AS ScheduledDate, - CASE - WHEN jp.RuleName = 'FirstWorkday' THEN dbo.fn_GetNextWorkday(DATEFROMPARTS(@Year, m.MonthNum, 1)) - WHEN jp.RuleName = 'LastWorkday' THEN dbo.fn_GetPreviousWorkday(EOMONTH(DATEFROMPARTS(@Year, m.MonthNum, 1))) - ELSE @FailSafeDate - END AS AdjustedRunDate, - FORMAT(DATEFROMPARTS(@Year, m.MonthNum, 1), 'yyyy-MM'), - @Year, - GETDATE(), - SYSTEM_USER - FROM #JobProcessing jp - CROSS JOIN (VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)) m(MonthNum) - WHERE jp.Frequency = 'MONTHLY' - AND jp.RuleName IN ('FirstWorkday', 'LastWorkday'); - - -- Handle monthly jobs with unknown rules - INSERT INTO dbo.JobSchedule (JobName, Frequency, ScheduledRule, ScheduledDate, AdjustedRunDate, MonthOfSchedule, YearOfSchedule, CreatedOn, CreatedBy) - SELECT - jp.JobName, - jp.Frequency, - jp.Pattern, - @FailSafeDate, - @FailSafeDate, - FORMAT(DATEFROMPARTS(@Year, m.MonthNum, 1), 'yyyy-MM'), - @Year, - GETDATE(), - SYSTEM_USER - FROM #JobProcessing jp - CROSS JOIN (VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)) m(MonthNum) - WHERE jp.Frequency = 'MONTHLY' - AND jp.RuleName NOT IN ('FirstWorkday', 'LastWorkday'); - - ------------------------------------------------------------------------- - -- 5. Process QUARTERLY jobs - FirstWorkdayOfQuarter - ------------------------------------------------------------------------- - INSERT INTO dbo.JobSchedule (JobName, Frequency, ScheduledRule, ScheduledDate, AdjustedRunDate, MonthOfSchedule, YearOfSchedule, CreatedOn, CreatedBy) - SELECT - jp.JobName, - jp.Frequency, - jp.Pattern, - dbo.fn_GetNextWorkday(DATEFROMPARTS(@Year, q.StartMonth, 1)), - dbo.fn_GetNextWorkday(DATEFROMPARTS(@Year, q.StartMonth, 1)), - FORMAT(DATEFROMPARTS(@Year, q.StartMonth, 1), 'yyyy-MM'), - @Year, - GETDATE(), - SYSTEM_USER - FROM #JobProcessing jp - CROSS JOIN (VALUES (1),(4),(7),(10)) q(StartMonth) - WHERE jp.Frequency = 'QUARTERLY' - AND jp.RuleName = 'FirstWorkdayOfQuarter'; - - ------------------------------------------------------------------------- - -- 6. Process QUARTERLY jobs - Months array with Day number - ------------------------------------------------------------------------- - ;WITH QuarterlyMonths AS ( - SELECT - jp.JobName, - jp.Frequency, - jp.Pattern, - CAST(m.[value] AS INT) AS MonthNum, - jp.DayNum - FROM #JobProcessing jp - CROSS APPLY OPENJSON(jp.MonthsJSON) m - WHERE jp.Frequency = 'QUARTERLY' - AND jp.MonthsJSON IS NOT NULL - AND jp.DayNum IS NOT NULL - AND jp.RuleName IS NULL - AND jp.HasExplicitSchedule = 0 - ), - QuarterlyDates AS ( - SELECT - qm.JobName, - qm.Frequency, - qm.Pattern, - qm.MonthNum, - qm.DayNum, - CASE - WHEN qm.DayNum <= DAY(EOMONTH(DATEFROMPARTS(@Year, qm.MonthNum, 1))) - THEN DATEFROMPARTS(@Year, qm.MonthNum, qm.DayNum) - ELSE EOMONTH(DATEFROMPARTS(@Year, qm.MonthNum, 1)) - END AS BaseDate - FROM QuarterlyMonths qm - ) - INSERT INTO dbo.JobSchedule (JobName, Frequency, ScheduledRule, ScheduledDate, AdjustedRunDate, MonthOfSchedule, YearOfSchedule, CreatedOn, CreatedBy) - SELECT - qd.JobName, - qd.Frequency, - qd.Pattern, - qd.BaseDate, - CASE - WHEN DATENAME(WEEKDAY, qd.BaseDate) IN ('Saturday','Sunday') - OR EXISTS (SELECT 1 FROM dbo.FederalHolidays WHERE HolidayDate = qd.BaseDate) - THEN dbo.fn_GetPreviousWorkday(qd.BaseDate) - ELSE qd.BaseDate - END AS AdjustedRunDate, - FORMAT(qd.BaseDate, 'yyyy-MM'), - @Year, - GETDATE(), - SYSTEM_USER - FROM QuarterlyDates qd; - - ------------------------------------------------------------------------- - -- 7. Process QUARTERLY jobs - Explicit Schedule array - ------------------------------------------------------------------------- - ;WITH ExplicitSchedules AS ( - SELECT - jp.JobName, - jp.Frequency, - jp.Pattern, - s.[Month] AS MonthNum, - s.[Day] AS DayNum - FROM #JobProcessing jp - CROSS APPLY OPENJSON(jp.Pattern, '$.Schedule') - WITH ( - [Month] INT '$.Month', - [Day] INT '$.Day' - ) s - WHERE jp.Frequency = 'QUARTERLY' - AND jp.HasExplicitSchedule = 1 - ), - ExplicitScheduleDates AS ( - SELECT - es.JobName, - es.Frequency, - es.Pattern, - es.MonthNum, - es.DayNum, - CASE - WHEN es.DayNum <= DAY(EOMONTH(DATEFROMPARTS(@Year, es.MonthNum, 1))) - THEN DATEFROMPARTS(@Year, es.MonthNum, es.DayNum) - ELSE EOMONTH(DATEFROMPARTS(@Year, es.MonthNum, 1)) - END AS BaseDate - FROM ExplicitSchedules es - ) - INSERT INTO dbo.JobSchedule (JobName, Frequency, ScheduledRule, ScheduledDate, AdjustedRunDate, MonthOfSchedule, YearOfSchedule, CreatedOn, CreatedBy) - SELECT - esd.JobName, - esd.Frequency, - esd.Pattern, - esd.BaseDate, - CASE - WHEN DATENAME(WEEKDAY, esd.BaseDate) IN ('Saturday','Sunday') - OR EXISTS (SELECT 1 FROM dbo.FederalHolidays WHERE HolidayDate = esd.BaseDate) - THEN dbo.fn_GetPreviousWorkday(esd.BaseDate) - ELSE esd.BaseDate - END AS AdjustedRunDate, - FORMAT(esd.BaseDate, 'yyyy-MM'), - @Year, - GETDATE(), - SYSTEM_USER - FROM ExplicitScheduleDates esd; - - ------------------------------------------------------------------------- - -- 8. Handle any quarterly jobs that didn't match the patterns above - ------------------------------------------------------------------------- - INSERT INTO dbo.JobSchedule (JobName, Frequency, ScheduledRule, ScheduledDate, AdjustedRunDate, MonthOfSchedule, YearOfSchedule, CreatedOn, CreatedBy) - SELECT - jp.JobName, - jp.Frequency, - jp.Pattern, - @FailSafeDate, - @FailSafeDate, - FORMAT(DATEFROMPARTS(@Year, 1, 1), 'yyyy-MM'), - @Year, - GETDATE(), - SYSTEM_USER - FROM #JobProcessing jp - WHERE jp.Frequency = 'QUARTERLY' - AND NOT EXISTS ( - SELECT 1 FROM dbo.JobSchedule js - WHERE js.JobName = jp.JobName AND js.YearOfSchedule = @Year - ); - - ------------------------------------------------------------------------- - -- 9. Cleanup and output - ------------------------------------------------------------------------- - DROP TABLE #JobProcessing; - - -- Update any NULL dates to fail-safe date - UPDATE dbo.JobSchedule - SET ScheduledDate = @FailSafeDate, - AdjustedRunDate = @FailSafeDate - WHERE YearOfSchedule = @Year - AND (ScheduledDate IS NULL OR AdjustedRunDate IS NULL); - - DECLARE @RecordCount INT = (SELECT COUNT(*) FROM dbo.JobSchedule WHERE YearOfSchedule = @Year); - - PRINT 'Job schedule generation completed for year ' + CAST(@Year AS VARCHAR(4)) + - '. Total records created: ' + CAST(@RecordCount AS VARCHAR(10)); -END; -GO \ No newline at end of file diff --git a/SQLAgent/01_Devl/3_Stored_Procedures/usp_ScheduleJob.sql b/SQLAgent/01_Devl/3_Stored_Procedures/usp_ScheduleJob.sql deleted file mode 100644 index f6c2ffa..0000000 --- a/SQLAgent/01_Devl/3_Stored_Procedures/usp_ScheduleJob.sql +++ /dev/null @@ -1,160 +0,0 @@ -USE [msdb] -GO - -/****** Object: StoredProcedure [dbo].[usp_ScheduleJob] Script Date: 10/18/2025 9:52:04 AM ******/ -SET ANSI_NULLS ON -GO - -SET QUOTED_IDENTIFIER ON -GO - - -CREATE OR ALTER PROCEDURE [dbo].[usp_ScheduleJob] - @JobName NVARCHAR(100), - @Env CHAR(4), -- 'DEVL' | 'TEST' | 'PROD' - @RunDate DATE, - @RunTime TIME -AS -BEGIN - SET NOCOUNT ON; - - DECLARE - @JobId UNIQUEIDENTIFIER, - @ScheduleName NVARCHAR(200), - @dbName NVARCHAR(128), - @ActiveStartDate INT, - @ActiveStartTime INT, - @Sql NVARCHAR(MAX), - @JobExists BIT = 0, - @ScheduleId INT; - - -- Table variable must be declared separately and at the top level - DECLARE @ExistingSchedules TABLE ( - schedule_id INT, - schedule_name NVARCHAR(200) - ); - - -- Map environment to actual DB name - SET @dbName = CASE @Env - WHEN 'DEVL' THEN 'DevlDUTASJobSchedule' - WHEN 'TEST' THEN 'TestDUTASJobSchedule' - WHEN 'PROD' THEN 'ProdDUTASJobSchedule' - ELSE 'DevlDUTASJobSchedule' - END; - - -- Validate parameters - IF @Env NOT IN ('DEVL','TEST','PROD') - BEGIN - RAISERROR('Env must be one of: DEVL, TEST, PROD.', 16, 1); - RETURN; - END - - IF @RunDate < CAST(GETDATE() AS DATE) - BEGIN - RAISERROR('RunDate cannot be in the past.', 16, 1); - RETURN; - END; - - -- Check if job exists in JobControl table - SET @Sql = N'SELECT @JobExists = 1 FROM ' + QUOTENAME(@dbName) + '.dbo.JobControl WHERE JobName = @JobNameParam'; - - EXEC sp_executesql @Sql, - N'@JobNameParam NVARCHAR(100), @JobExists BIT OUTPUT', - @JobNameParam = @JobName, - @JobExists = @JobExists OUTPUT; - - IF @JobExists = 0 - BEGIN - RAISERROR('Job %s not found in JobControl table.', 16, 1, @JobName); - RETURN; - END; - - -- Activate job in control table - SET @Sql = N'UPDATE ' + QUOTENAME(@dbName) + '.dbo.JobControl SET IsActive = 1 WHERE JobName = @JobNameParam'; - EXEC sp_executesql @Sql, - N'@JobNameParam NVARCHAR(100)', - @JobNameParam = @JobName; - - PRINT 'Job activated in JobControl.'; - - -- Convert date/time to SQL Agent format - SET @ActiveStartDate = CONVERT(INT, CONVERT(CHAR(8), @RunDate, 112)); - SET @ActiveStartTime = DATEPART(HOUR, @RunTime) * 10000 + - DATEPART(MINUTE, @RunTime) * 100 + - DATEPART(SECOND, @RunTime); - - SET @ScheduleName = @JobName + '_MonthlySchedule'; - - -- Get job id - SELECT @JobId = job_id - FROM msdb.dbo.sysjobs - WHERE name = @JobName; - - IF @JobId IS NULL - BEGIN - RAISERROR('SQL Agent job "%s" not found.', 16, 1, @JobName); - RETURN; - END; - - BEGIN TRY - BEGIN TRANSACTION; - - -- Detach and delete all existing schedules for this job - INSERT INTO @ExistingSchedules (schedule_id, schedule_name) - SELECT s.schedule_id, s.name - FROM msdb.dbo.sysschedules AS s - INNER JOIN msdb.dbo.sysjobschedules AS js ON s.schedule_id = js.schedule_id - WHERE js.job_id = @JobId; - - DECLARE @OldScheduleId INT, @OldScheduleName NVARCHAR(200); - - DECLARE cur CURSOR LOCAL FAST_FORWARD FOR - SELECT schedule_id, schedule_name FROM @ExistingSchedules; - - OPEN cur; - FETCH NEXT FROM cur INTO @OldScheduleId, @OldScheduleName; - - WHILE @@FETCH_STATUS = 0 - BEGIN - PRINT 'Detaching old schedule: ' + @OldScheduleName; - EXEC msdb.dbo.sp_detach_schedule @job_id = @JobId, @schedule_name = @OldScheduleName; - - PRINT 'Deleting old schedule: ' + @OldScheduleName; - EXEC msdb.dbo.sp_delete_schedule @schedule_name = @OldScheduleName; - - FETCH NEXT FROM cur INTO @OldScheduleId, @OldScheduleName; - END - - CLOSE cur; - DEALLOCATE cur; - - -- Create new one-time schedule - EXEC msdb.dbo.sp_add_schedule - @schedule_name = @ScheduleName, - @enabled = 1, - @freq_type = 1, -- One-time - @active_start_date = @ActiveStartDate, - @active_start_time = @ActiveStartTime; - - -- Attach schedule to job - EXEC msdb.dbo.sp_attach_schedule - @job_id = @JobId, - @schedule_name = @ScheduleName; - - COMMIT TRANSACTION; - - PRINT 'New schedule created for job "' + @JobName + - '" on ' + CONVERT(VARCHAR(10), @RunDate, 120) + - ' at ' + CONVERT(VARCHAR(8), @RunTime, 108); - END TRY - BEGIN CATCH - IF @@TRANCOUNT > 0 - ROLLBACK TRANSACTION; - - DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE(); - RAISERROR('Error creating schedule: %s', 16, 1, @ErrorMessage); - END CATCH; -END; -GO - - diff --git a/SQLAgent/01_Devl/3_Stored_Procedures/usp_ScheduleJobsForMonth.sql b/SQLAgent/01_Devl/3_Stored_Procedures/usp_ScheduleJobsForMonth.sql deleted file mode 100644 index 0be312a..0000000 --- a/SQLAgent/01_Devl/3_Stored_Procedures/usp_ScheduleJobsForMonth.sql +++ /dev/null @@ -1,39 +0,0 @@ -USE DevlDUTASJobSchedule; -GO - -CREATE OR ALTER PROCEDURE dbo.usp_ScheduleJobsForMonth -AS -BEGIN - SET NOCOUNT ON; - - DECLARE @MonthKey CHAR(7) = FORMAT(GETDATE(), 'yyyy-MM'); - DECLARE @Year INT = YEAR(GETDATE()); - DECLARE @JobName VARCHAR(100); - DECLARE @RunDate DATE; - DECLARE @RunTime TIME; - DECLARE @Env VARCHAR(10) = 'DEVL'; -- configurable per environment - - DECLARE job_cursor CURSOR FOR - SELECT js.JobName, js.AdjustedRunDate, jc.ScheduledStartTime - FROM dbo.JobSchedule js - INNER JOIN dbo.JobControl jc ON js.JobName = jc.JobName - WHERE js.MonthOfSchedule = @MonthKey - AND jc.IsActive = 1; - - OPEN job_cursor; - FETCH NEXT FROM job_cursor INTO @JobName, @RunDate, @RunTime; - - WHILE @@FETCH_STATUS = 0 - BEGIN - EXEC msdb.dbo.usp_ScheduleJob - @JobName = @JobName, - @Env = @Env, - @RunDate = @RunDate, - @RunTime = @RunTime; - - FETCH NEXT FROM job_cursor INTO @JobName, @RunDate, @RunTime; - END - - CLOSE job_cursor; - DEALLOCATE job_cursor; -END diff --git a/SQLAgent/01_Devl/3_Stored_Procedures/usp_TriggerMissedJobs.sql b/SQLAgent/01_Devl/3_Stored_Procedures/usp_TriggerMissedJobs.sql deleted file mode 100644 index 0176424..0000000 Binary files a/SQLAgent/01_Devl/3_Stored_Procedures/usp_TriggerMissedJobs.sql and /dev/null differ diff --git a/SQLAgent/01_Devl/3_Stored_Procedures/usp_UpdateJobStatus_Generic.sql b/SQLAgent/01_Devl/3_Stored_Procedures/usp_UpdateJobStatus_Generic.sql deleted file mode 100644 index 959016b..0000000 Binary files a/SQLAgent/01_Devl/3_Stored_Procedures/usp_UpdateJobStatus_Generic.sql and /dev/null differ diff --git a/SQLAgent/01_Devl/4_Job_Maintenance/ActivateOnDemandJob.sql b/SQLAgent/01_Devl/4_Job_Maintenance/ActivateOnDemandJob.sql deleted file mode 100644 index e6a4f58..0000000 --- a/SQLAgent/01_Devl/4_Job_Maintenance/ActivateOnDemandJob.sql +++ /dev/null @@ -1,10 +0,0 @@ -USE msdb; -GO - --- Schedule DEVL OnDemand Job on 03 Nov at 18:15 PM ------------------------------------------------- -EXEC dbo.usp_ScheduleJob - @JobName='DEVL_MONTHLY_DTSRQ414', - @Env='DEVL', - @RunDate='2025-11-03', - @RunTime='18:15:00'; diff --git a/SQLAgent/01_Devl/4_Job_Maintenance/AddAllJobsToSQLAgent.sql b/SQLAgent/01_Devl/4_Job_Maintenance/AddAllJobsToSQLAgent.sql deleted file mode 100644 index 1fe50e2..0000000 --- a/SQLAgent/01_Devl/4_Job_Maintenance/AddAllJobsToSQLAgent.sql +++ /dev/null @@ -1,141 +0,0 @@ -USE [msdb] -GO - --- Execute the stored procedure for each job -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSBX215', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSBX305', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSGSID0', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_GSIRQ300', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSRQ202', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSGSID1', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSBX202', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSFT202', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSBX432', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSGACHD', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSBX303', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSGWAGE', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSGCHKS', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSESDAY', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSGPAYT', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSDX145', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSBX629', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSBX630', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSFRAUD', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSRACHD', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSBXACH', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSBXREG', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSBX430', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSBX626', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSBX530', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSBXREL', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSBX450', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSBX451', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSPACHD', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSPX148', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSRQ325', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSBX427', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSPDAY1', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSW4WGE', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSGSID2', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSGSID9', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSMIN01', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSMIN02', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSRQ459', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSBXPFL', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DESBD427', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSBX403', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSBE405', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSBX405', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSRQ335', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSBX601', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_WEEKLY_DTSGSID0', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_WEEKLY_DTSGSID1', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_WEEKLY_DTSBX202', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_WEEKLY_DTSFT202', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_WEEKLY_DTSBX470', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_WEEKLY_DTSBXREJ', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_WEEKLY_DTSPDAY7', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_WEEKLY_DTSBX122', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_WEEKLY_DTSRQ511', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_WEEKLY_DTSRQ444', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_WEEKLY_DTSRQ126', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_MONTHLY_DTSRQ414', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_MONTHLY_DTSPMON1', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_MONTHLY_DTSCHGVB', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_MONTHLY_DTSCHGVR', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_MONTHLY_DTSVBKUP', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_MONTHLY_DTSVRSTR', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_MONTHLY_DTSRQ442', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_MONTHLY_DTSBX460', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_MONTHLY_DTSRQ513', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_MONTHLY_DTSCHGDC', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_QUARTERLY_DTSRQ119', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_QUARTERLY_DTSRQ902', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_QUARTERLY_DTSBX500', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_QUARTERLY_DTSRQ417', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_QUARTERLY_DTSRQ320', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_QUARTERLY_DTSRQ713', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_QUARTERLY_DTSBX468', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_QUARTERLY_DTSCHGQ1', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_QUARTERLY_DTSCHGQ2', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_QUARTERLY_DTSRQ327', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_QUARTERLY_DTSRQ328', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_QUARTERLY_DTSRQ412', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_QUARTERLY_DTSRQ793', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_QUARTERLY_DTSWGE06', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_QUARTERLY_DTSCHGRT', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_QUARTERLY_DTSCHRGS', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_QUARTERLY_DTSRQ540', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_QUARTERLY_DTSRQ591', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_QUARTERLY_DTSRTCHG', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_QUARTERLY_DTSWGE01', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_QUARTERLY_DESBD426', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSACH01', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSBX415', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSBX452', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSBX453', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRQ120', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRQ123', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRQ125', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRQ305', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRQ306', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRQ308', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRQ311', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRQ410', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRQ411', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRQ423', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRQ426', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRQ429', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRQ439', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRQ602', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRQ606', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRQ607', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRQ609', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRQ611', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRQ612', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRQ717', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRQ718', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRQ720', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRQ721', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRT715', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRT716', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRT717', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRT718', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRT719', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRT720', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRT722', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_ONDEMAND_DTSRT723', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_YEARLY_DTSRQ722', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_YEARLY_DTSRQ451', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_YEARLY_DTSRQ127', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_YEARLY_DTSRQ321', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_YEARLY_DTSRQ455', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_YEARLY_DTSRQ500', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_YEARLY_DTSRQ517', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_YEARLY_DTSRQ518', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_YEARLY_DTSRQ616', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_YEARLY_DTSRQ701', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_YEARLY_DTSRQ702', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_YEARLY_DTSRQ704', @Env = 'DEVL'; -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_YEARLY_DTSRQ910', @Env = 'DEVL'; -GO \ No newline at end of file diff --git a/SQLAgent/01_Devl/4_Job_Maintenance/AddDailyJobSchedule.sql b/SQLAgent/01_Devl/4_Job_Maintenance/AddDailyJobSchedule.sql deleted file mode 100644 index 3183ffd..0000000 --- a/SQLAgent/01_Devl/4_Job_Maintenance/AddDailyJobSchedule.sql +++ /dev/null @@ -1 +0,0 @@ -EXEC msdb.dbo.usp_CreateDailyJobSchedule @Env = 'DEVL'; \ No newline at end of file diff --git a/SQLAgent/01_Devl/4_Job_Maintenance/AddNewJobToSQLAgent.sql b/SQLAgent/01_Devl/4_Job_Maintenance/AddNewJobToSQLAgent.sql deleted file mode 100644 index 743765a..0000000 --- a/SQLAgent/01_Devl/4_Job_Maintenance/AddNewJobToSQLAgent.sql +++ /dev/null @@ -1,5 +0,0 @@ -USE [msdb] -GO - --- Create a job in SQL Agent (With Standard 3 steps approach) -EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSBX215', @Env = 'DEVL'; \ No newline at end of file diff --git a/SQLAgent/01_Devl/4_Job_Maintenance/AddWeeklyJobSchedule.sql b/SQLAgent/01_Devl/4_Job_Maintenance/AddWeeklyJobSchedule.sql deleted file mode 100644 index 7a1f2b5..0000000 --- a/SQLAgent/01_Devl/4_Job_Maintenance/AddWeeklyJobSchedule.sql +++ /dev/null @@ -1 +0,0 @@ -EXEC msdb.dbo.usp_CreateWeeklySchedules @Env = 'DEVL'; \ No newline at end of file diff --git a/SQLAgent/01_Devl/4_Job_Maintenance/DailyJobScheduleLookup.sql b/SQLAgent/01_Devl/4_Job_Maintenance/DailyJobScheduleLookup.sql deleted file mode 100644 index b893457..0000000 --- a/SQLAgent/01_Devl/4_Job_Maintenance/DailyJobScheduleLookup.sql +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************************************** - 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: - • Uses MSDB’s internal schedule definitions (sysschedules, sysjobschedules). - • Supports One-time, Daily, Weekly, and Monthly schedule types. - • 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 = 'DEVL'; -- Change for TEST 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 diff --git a/SQLAgent/01_Devl/4_Job_Maintenance/DeactivateJob.sql b/SQLAgent/01_Devl/4_Job_Maintenance/DeactivateJob.sql deleted file mode 100644 index 3822af3..0000000 --- a/SQLAgent/01_Devl/4_Job_Maintenance/DeactivateJob.sql +++ /dev/null @@ -1,12 +0,0 @@ -USE DevlDUTASJobSchedule; -GO - -UPDATE dbo.JobControl -SET IsActive = 0 -WHERE Frequency = 'MONTHLY'; -GO - --- Optional: Verify changes -SELECT JobName, Frequency, IsActive -FROM dbo.JobControl -WHERE Frequency = 'MONTHLY'; diff --git a/SQLAgent/01_Devl/4_Job_Maintenance/DeleteSchedule.sql b/SQLAgent/01_Devl/4_Job_Maintenance/DeleteSchedule.sql deleted file mode 100644 index b3cf962..0000000 --- a/SQLAgent/01_Devl/4_Job_Maintenance/DeleteSchedule.sql +++ /dev/null @@ -1,27 +0,0 @@ -USE msdb; -GO - -DECLARE @EnvPrefix NVARCHAR(50) = N'DEVL'; -- <<< Change this to your environment prefix -DECLARE @schedule_id INT; -DECLARE @schedule_name NVARCHAR(128); - -DECLARE Sched_Cursor CURSOR FOR -SELECT schedule_id, name -FROM msdb.dbo.sysschedules -WHERE name LIKE @EnvPrefix + '%'; -- Only schedules starting with the given prefix - -OPEN Sched_Cursor; -FETCH NEXT FROM Sched_Cursor INTO @schedule_id, @schedule_name; - -WHILE @@FETCH_STATUS = 0 -BEGIN - PRINT 'Deleting schedule: ' + @schedule_name; - EXEC msdb.dbo.sp_delete_schedule @schedule_id = @schedule_id; - FETCH NEXT FROM Sched_Cursor INTO @schedule_id, @schedule_name; -END - -CLOSE Sched_Cursor; -DEALLOCATE Sched_Cursor; - -PRINT 'All SQL Agent schedules starting with prefix ' + @EnvPrefix + ' deleted successfully.'; -GO diff --git a/SQLAgent/01_Devl/4_Job_Maintenance/DetachDeleteScheduleByName.sql b/SQLAgent/01_Devl/4_Job_Maintenance/DetachDeleteScheduleByName.sql deleted file mode 100644 index c337e5e..0000000 --- a/SQLAgent/01_Devl/4_Job_Maintenance/DetachDeleteScheduleByName.sql +++ /dev/null @@ -1,13 +0,0 @@ --- If you know both the job name and schedule name -DECLARE @JobName NVARCHAR(100) = 'DEVL_MONTHLY_DTSCHGDC'; -DECLARE @ScheduleName NVARCHAR(200) = 'DEVL_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; diff --git a/SQLAgent/01_Devl/4_Job_Maintenance/ForceCompleteJob.sql b/SQLAgent/01_Devl/4_Job_Maintenance/ForceCompleteJob.sql deleted file mode 100644 index 9add511..0000000 --- a/SQLAgent/01_Devl/4_Job_Maintenance/ForceCompleteJob.sql +++ /dev/null @@ -1,16 +0,0 @@ -USE DevlDUTASJobSchedule; -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); \ No newline at end of file diff --git a/SQLAgent/01_Devl/4_Job_Maintenance/GenerateJobScheduleTable.sql b/SQLAgent/01_Devl/4_Job_Maintenance/GenerateJobScheduleTable.sql deleted file mode 100644 index eae7ee1..0000000 --- a/SQLAgent/01_Devl/4_Job_Maintenance/GenerateJobScheduleTable.sql +++ /dev/null @@ -1,10 +0,0 @@ -USE DevlDUTASJobSchedule; -GO - --- Set Job Schedule for the Year 2025 -EXEC dbo.usp_GenerateJobSchedule @Year = 2025; -GO - --- Set Job Schedule for the Year 2026 -EXEC dbo.usp_GenerateJobSchedule @Year = 2026; -GO \ No newline at end of file diff --git a/SQLAgent/01_Devl/4_Job_Maintenance/JobInfo.sql b/SQLAgent/01_Devl/4_Job_Maintenance/JobInfo.sql deleted file mode 100644 index 426e047..0000000 --- a/SQLAgent/01_Devl/4_Job_Maintenance/JobInfo.sql +++ /dev/null @@ -1,47 +0,0 @@ -USE msdb; -GO - -PRINT '================================================================================'; -PRINT 'SECTION 1: JOB CONTROL INFORMATION'; -PRINT '================================================================================'; -GO - --- View all active jobs -SELECT JobName, ScheduledStartTime, Frequency, IsActive -FROM DevlDUTASJobSchedule.dbo.JobControl -WHERE IsActive = 1 -ORDER BY Frequency, ScheduledStartTime; -GO - --- View all inactive jobs -SELECT JobName, Frequency, ScheduledStartTime -FROM DevlDUTASJobSchedule.dbo.JobControl -WHERE IsActive = 0 -ORDER BY Frequency; -GO - --- Find weekly/monthly jobs -SELECT JobName, Frequency, ScheduledStartTime -FROM DevlDUTASJobSchedule.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) = 'DEVL_MONTHLY_DTSCHGVR'; -SELECT JobName, PredecessorJobName -FROM DevlDUTASJobSchedule.dbo.JobDependencies -WHERE JobName = @Job; -GO - --- Show dependency chain overview -SELECT d.JobName, d.PredecessorJobName, jc.ScheduledStartTime, jc.Frequency -FROM DevlDUTASJobSchedule.dbo.JobDependencies d -JOIN DevlDUTASJobSchedule.dbo.JobControl jc ON d.JobName = jc.JobName -ORDER BY jc.Frequency, jc.ScheduledStartTime; -GO diff --git a/SQLAgent/01_Devl/4_Job_Maintenance/SQLAgentInfo.sql b/SQLAgent/01_Devl/4_Job_Maintenance/SQLAgentInfo.sql deleted file mode 100644 index d63458e..0000000 --- a/SQLAgent/01_Devl/4_Job_Maintenance/SQLAgentInfo.sql +++ /dev/null @@ -1,42 +0,0 @@ -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 \ No newline at end of file diff --git a/SQLAgent/01_Devl/4_Job_Maintenance/ScheduleJobsMonthly.sql b/SQLAgent/01_Devl/4_Job_Maintenance/ScheduleJobsMonthly.sql deleted file mode 100644 index 975520b..0000000 --- a/SQLAgent/01_Devl/4_Job_Maintenance/ScheduleJobsMonthly.sql +++ /dev/null @@ -1,3 +0,0 @@ -USE DevlDUTASJobSchedule; -GO -EXEC dbo.usp_ScheduleJobsForMonth; diff --git a/SQLAgent/01_Devl/4_Job_Maintenance/TodaysExecution.sql b/SQLAgent/01_Devl/4_Job_Maintenance/TodaysExecution.sql deleted file mode 100644 index 3480fdd..0000000 --- a/SQLAgent/01_Devl/4_Job_Maintenance/TodaysExecution.sql +++ /dev/null @@ -1,21 +0,0 @@ -USE DevlDUTASJobSchedule; -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; diff --git a/SQLAgent/01_Devl/4_Job_Maintenance/TriggerMissedJob.sql b/SQLAgent/01_Devl/4_Job_Maintenance/TriggerMissedJob.sql deleted file mode 100644 index c2f3e90..0000000 --- a/SQLAgent/01_Devl/4_Job_Maintenance/TriggerMissedJob.sql +++ /dev/null @@ -1,9 +0,0 @@ -USE [DevlDUTASJobSchedule] -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; - diff --git a/SQLAgent/01_Devl/4_PowerShell_Scripts/Backup-SQLAgentJobs.ps1 b/SQLAgent/01_Devl/4_PowerShell_Scripts/Backup-SQLAgentJobs.ps1 deleted file mode 100644 index f858d64..0000000 --- a/SQLAgent/01_Devl/4_PowerShell_Scripts/Backup-SQLAgentJobs.ps1 +++ /dev/null @@ -1,16 +0,0 @@ -# Example PowerShell snippet -$Server = "DOES-DUTAS-SQL1" -$BackupPath = "\\DOES-RAINVM-DEV\E$\Neeraj\SqlAgent\Backup\" -$Timestamp = Get-Date -Format "yyyyMMdd_HHmmss" -$ZipFile = "$BackupPath\SQLAgentJobs_$Timestamp.zip" - -# Make backup folder if not exist -if (-not (Test-Path $BackupPath)) { New-Item -ItemType Directory -Path $BackupPath } - -# Export all jobs as SQL files -sqlcmd -S $Server -Q "EXEC msdb.dbo.sp_help_job" -o "$BackupPath\SQLAgentJobs_$Timestamp.txt" - -# Compress to zip -Compress-Archive -Path "$BackupPath\*" -DestinationPath $ZipFile -Force - -Write-Host "✅ Backup complete: $ZipFile" diff --git a/SQLAgent/01_Devl/4_PowerShell_Scripts/Execute-RemoteJob.ps1 b/SQLAgent/01_Devl/4_PowerShell_Scripts/Execute-RemoteJob.ps1 deleted file mode 100644 index eace0e0..0000000 --- a/SQLAgent/01_Devl/4_PowerShell_Scripts/Execute-RemoteJob.ps1 +++ /dev/null @@ -1,102 +0,0 @@ -param( - [Parameter(Mandatory = $true)] - [string]$JobName, - - [Parameter(Mandatory = $true)] - [ValidateSet('DEVL', 'TEST', 'PROD')] - [string]$Env -) - -try { - Write-Host "Starting job $JobName in environment $Env at $(Get-Date)" - - # ------------------------------------------------------------ - # Extract JCL from JobName (ENV_FREQUENCY_JOB pattern) - # ------------------------------------------------------------ - $JCL = $JobName -replace '^[A-Z]+_[A-Z]+_', '' - Write-Host "Extracted JCL: $JCL from JobName: $JobName" -ForegroundColor Yellow - - # ------------------------------------------------------------ - # Environment-specific configuration - # ------------------------------------------------------------ - switch ($Env.ToUpper()) { - 'DEVL' { - $ComputerName = '10.57.110.120' - $DatabaseName = 'DevlDUTASJobSchedule' - } - 'TEST' { - $ComputerName = '10.57.110.141' - $DatabaseName = 'TestDUTASJobSchedule' - } - 'PROD' { - $ComputerName = '10.57.111.120' - $DatabaseName = 'ProdDUTASJobSchedule' - } - default { - throw "Invalid environment specified: $Env" - } - } - - # ------------------------------------------------------------ - # Remote credentials - # (recommend moving credentials to secure vault for production) - # ------------------------------------------------------------ - $username = "DUTASSQLAdminP@does.dcgov.priv" - $password = "4ho@3Pr&Xof8" | ConvertTo-SecureString -AsPlainText -Force - $credential = New-Object System.Management.Automation.PSCredential($username, $password) - - # ------------------------------------------------------------ - # Execute job remotely using the extracted JCL - # ------------------------------------------------------------ - Write-Host "Connecting to remote server $ComputerName ..." - $exitCode = Invoke-Command -ComputerName $ComputerName ` - -Credential $credential ` - -Authentication CredSSP ` - -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck) ` - -ArgumentList $JobName, $JCL, $Env ` - -ScriptBlock { - param($JobName, $JCL, $Env) - - Write-Host "Remote execution - JobName: $JobName, JCL: $JCL, Env: $Env" - - $process = Start-Process -FilePath "powershell.exe" ` - -ArgumentList "-ExecutionPolicy Bypass -File `"E:\PSScript\RCSubmit-Job.ps1`" -JobName `"$JCL`" -Env `"$Env`"" ` - -NoNewWindow -Wait -PassThru - return $process.ExitCode - } - - if ($exitCode -eq 0) { - Write-Host "Job $JobName (JCL: $JCL) completed successfully at $(Get-Date)" -ForegroundColor Green - } else { - Write-Error "Job $JobName (JCL: $JCL) failed with exit code: $exitCode" - } -} -catch { - Write-Error "Job $JobName failed with error: $($_.Exception.Message)" - $exitCode = 1 -} -finally { - # ------------------------------------------------------------ - # Log exit code to the appropriate database - # ------------------------------------------------------------ - try { - $connectionString = "Server=localhost;Database=$DatabaseName;Trusted_Connection=true;" - $connection = New-Object System.Data.SqlClient.SqlConnection($connectionString) - $connection.Open() - - $command = $connection.CreateCommand() - $command.CommandText = @" - INSERT INTO dbo.JobExitCodes (JobName, RunDate, ExitCode, RecordedTime) - VALUES ('$JobName', CAST(GETDATE() AS DATE), $exitCode, GETDATE()); -"@ - $command.ExecuteNonQuery() - $connection.Close() - Write-Host "Exit code $exitCode logged to database $DatabaseName for job $JobName" - } - catch { - $errorMsg = $_.Exception.Message - Write-Host "Failed to log exit code to database $DatabaseName`: $errorMsg" - } -} - -exit $exitCode \ No newline at end of file diff --git a/SQLAgent/01_Devl/4_PowerShell_Scripts/RCSubmit-Job.ps1 b/SQLAgent/01_Devl/4_PowerShell_Scripts/RCSubmit-Job.ps1 deleted file mode 100644 index 3fb0c57..0000000 --- a/SQLAgent/01_Devl/4_PowerShell_Scripts/RCSubmit-Job.ps1 +++ /dev/null @@ -1,108 +0,0 @@ -param( - [string]$JobName, - [string]$Env -) - -# --- Parameter Validation --- -if (-not $JobName) { - Write-Host "JobName parameter is required" -ForegroundColor Red - exit 1 -} -if (-not $Env) { - Write-Host "Environment (Env) parameter is required" -ForegroundColor Red - exit 1 -} - -# --- Execute Job --- -Write-Host "Submitting job: $JobName in environment: $Env" -ForegroundColor Cyan -$output = & "$env:rcbin\submit.exe" -DSN="DOESTAX.$Env.JOBS.BATCH.LIB($JobName)" -$exitCode = [int]$LASTEXITCODE -$isSuccess = 0 - -# --- Parse SYSLOG Path --- -$syslogPath = $null -$syslogFolder = "Not found" -$content = @() -$summary = @() - -try { - $syslogPath = $output | Select-String -Pattern "SYSLOG=\[(.*)\]" | ForEach-Object { $_.Matches.Groups[1].Value } - - if ($syslogPath -and (Test-Path $syslogPath)) { - $syslogFolder = Split-Path $syslogPath -Parent - $content = Get-Content $syslogPath -ErrorAction Stop - $summary = $content | Select-String -Pattern "%Job Overall Stats:" -Context 0,7 | ForEach-Object { - $_.Context.PostContext | Select-Object -Skip 1 -First 5 - } - } else { - Write-Host "SYSLOG path not found or inaccessible: $syslogPath" -ForegroundColor Yellow - $summary = @("SYSLOG file not found in output", "Raw output:", $output -join "`n") - } -} -catch { - Write-Host "Error processing SYSLOG: $($_.Exception.Message)" -ForegroundColor Yellow - $summary = @("Error reading SYSLOG: $($_.Exception.Message)", "Raw output:", $output -join "`n") -} - -# --- Evaluate Return Codes --- -$successConditions = @( - { $JobName -eq "GSIRQ300" -and $exitCode -eq 50 }, - { $JobName -eq "DTSGWAGE" -and $exitCode -eq 8 }, - { $JobName -eq "DTSGCHKS" -and $exitCode -eq 8 }, - { $JobName -eq "DTSGPAYT" -and $exitCode -eq 8 }, - { $JobName -eq "DTSBXACH" -and $exitCode -eq 2 }, - { $JobName -eq "DTSBXREL" -and $exitCode -eq 2 }, - { $JobName -eq "DTSMIN02" -and $exitCode -eq 4 }, - { $JobName -eq "DTSBE405" -and $exitCode -eq 910 }, - { $JobName -eq "DTSBXREJ" -and $exitCode -eq 4 }, - { $JobName -eq "DTSRQ444" -and $exitCode -eq 4 }, - { $exitCode -eq 0 } -) - -if ($successConditions | Where-Object { & $_ }) { - Write-Host "Job $JobName succeeded with code $exitCode" -ForegroundColor Green - $isSuccess = 0 -} else { - Write-Host "Job $JobName failed with code $exitCode" -ForegroundColor Red - $isSuccess = 1 - # Only use error if we don't have a proper summary - if ($summary.Count -eq 0) { - $summary = @($Error[0]) - } -} - -# --- Email Notification --- -$smtpServer = "smtp4.dc.gov" -$fromEmail = "Dutas@dc.gov" -$toEmail = "neerajk@innovaconsulting.com" -$ccEmail = @("neerajk@innovaconsulting.com") - -$emailBody = @" -
-DUTAS Batch Job: $JobName Execution Report
-==========================================
-$($summary -join "`n")
-==========================================
-
-Return Code: $exitCode
-Status: $(if ($isSuccess -eq 0) { "SUCCESS" } else { "FAILED" })
-JOBLOG Path: $syslogFolder
-
-"@
-
-try {
- Send-MailMessage -SmtpServer $smtpServer -Port 25 `
- -From $fromEmail -To $toEmail -Cc $ccEmail `
- -Subject "DUTAS-[$Env] Job Status: $JobName - $(if ($isSuccess -eq 0) { 'SUCCESS' } else { 'FAILED' })" `
- -Body $emailBody -BodyAsHtml
- Write-Host "Email sent successfully to $toEmail" -ForegroundColor Cyan
-}
-catch {
- Write-Host "Failed to send email: $($_.Exception.Message)" -ForegroundColor Yellow
-}
-
-Write-Host "`n---------------------------------------------"
-Write-Host "Job: $JobName | ExitCode: $exitCode | Status: $(if ($isSuccess -eq 0) { 'SUCCESS' } else { 'FAILED' })"
-Write-Host "---------------------------------------------`n"
-
-exit $isSuccess
\ No newline at end of file
diff --git a/SQLAgent/01_Devl/5_Deployment/Deploy_DEVL_to_TEST.sql b/SQLAgent/01_Devl/5_Deployment/Deploy_DEVL_to_TEST.sql
deleted file mode 100644
index 2cd3fa5..0000000
--- a/SQLAgent/01_Devl/5_Deployment/Deploy_DEVL_to_TEST.sql
+++ /dev/null
@@ -1,15 +0,0 @@
-DECLARE @SrcDB NVARCHAR(128) = 'DevlDUTASJobSchedule';
-DECLARE @NewDB NVARCHAR(128) = 'TestDUTASJobSchedule';
-DECLARE @Backup NVARCHAR(260) = '\\DOES-RAINVM-DEV\E$\Neeraj\SqlAgent\Backup\' + @SrcDB + '.bak';
-
--- Backup Source
-BACKUP DATABASE @SrcDB TO DISK = @Backup WITH INIT, COMPRESSION;
-
--- Restore as Target
-DECLARE @SQL NVARCHAR(MAX) = '
-RESTORE DATABASE [' + @NewDB + ']
-FROM DISK = N''' + @Backup + '''
-WITH MOVE N''' + @SrcDB + ''' TO N''\\DOES-RAINVM-DEV\E$\SQLData\' + @NewDB + '.mdf'',
- MOVE N''' + @SrcDB + '_log'' TO N''\\DOES-RAINVM-DEV\E$\SQLLogs\' + @NewDB + '_log.ldf'',
- REPLACE;';
-EXEC(@SQL);
diff --git a/SQLAgent/01_Devl/5_Deployment/Deploy_TEST_to_PROD.sql b/SQLAgent/01_Devl/5_Deployment/Deploy_TEST_to_PROD.sql
deleted file mode 100644
index 3cd8de6..0000000
--- a/SQLAgent/01_Devl/5_Deployment/Deploy_TEST_to_PROD.sql
+++ /dev/null
@@ -1,15 +0,0 @@
-DECLARE @SrcDB NVARCHAR(128) = 'TestDUTASJobSchedule';
-DECLARE @NewDB NVARCHAR(128) = 'ProdDUTASJobSchedule';
-DECLARE @Backup NVARCHAR(260) = '\\DOES-RAINVM-DEV\E$\Neeraj\SqlAgent\Backup\' + @SrcDB + '.bak';
-
--- Backup Source
-BACKUP DATABASE @SrcDB TO DISK = @Backup WITH INIT, COMPRESSION;
-
--- Restore as Target
-DECLARE @SQL NVARCHAR(MAX) = '
-RESTORE DATABASE [' + @NewDB + ']
-FROM DISK = N''' + @Backup + '''
-WITH MOVE N''' + @SrcDB + ''' TO N''\\DOES-RAINVM-DEV\E$\SQLData\' + @NewDB + '.mdf'',
- MOVE N''' + @SrcDB + '_log'' TO N''\\DOES-RAINVM-DEV\E$\SQLLogs\' + @NewDB + '_log.ldf'',
- REPLACE;';
-EXEC(@SQL);
diff --git a/SQLAgent/01_Devl/5_PowerShell_Scripts/Execute-RemoteJob.ps1 b/SQLAgent/01_Devl/5_PowerShell_Scripts/Execute-RemoteJob.ps1
deleted file mode 100644
index ddf3ea8..0000000
--- a/SQLAgent/01_Devl/5_PowerShell_Scripts/Execute-RemoteJob.ps1
+++ /dev/null
@@ -1,102 +0,0 @@
-param(
- [Parameter(Mandatory = $true)]
- [string]$JobName,
-
- [Parameter(Mandatory = $true)]
- [ValidateSet('DEVL', 'TEST', 'PROD')]
- [string]$Env
-)
-
-try {
- Write-Host "Starting job $JobName in environment $Env at $(Get-Date)"
-
- # ------------------------------------------------------------
- # Extract JCL from JobName (ENV_FREQUENCY_JOB pattern)
- # ------------------------------------------------------------
- $JCL = $JobName -replace '^[A-Z]+_[A-Z]+_', ''
- Write-Host "Extracted JCL: $JCL from JobName: $JobName" -ForegroundColor Yellow
-
- # ------------------------------------------------------------
- # Environment-specific configuration
- # ------------------------------------------------------------
- switch ($Env.ToUpper()) {
- 'DEVL' {
- $ComputerName = '10.57.110.120'
- $DatabaseName = 'DevlDUTASJobSchedule'
- }
- 'TEST' {
- $ComputerName = '10.57.110.141'
- $DatabaseName = 'TestDUTASJobSchedule'
- }
- 'PROD' {
- $ComputerName = '10.57.111.125'
- $DatabaseName = 'ProdDUTASJobSchedule'
- }
- default {
- throw "Invalid environment specified: $Env"
- }
- }
-
- # ------------------------------------------------------------
- # Remote credentials
- # (recommend moving credentials to secure vault for production)
- # ------------------------------------------------------------
- $username = "DUTASSQLAdminP@does.dcgov.priv"
- $password = "4ho@3Pr&Xof8" | ConvertTo-SecureString -AsPlainText -Force
- $credential = New-Object System.Management.Automation.PSCredential($username, $password)
-
- # ------------------------------------------------------------
- # Execute job remotely using the extracted JCL
- # ------------------------------------------------------------
- Write-Host "Connecting to remote server $ComputerName ..."
- $exitCode = Invoke-Command -ComputerName $ComputerName `
- -Credential $credential `
- -Authentication CredSSP `
- -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck) `
- -ArgumentList $JobName, $JCL, $Env `
- -ScriptBlock {
- param($JobName, $JCL, $Env)
-
- Write-Host "Remote execution - JobName: $JobName, JCL: $JCL, Env: $Env"
-
- $process = Start-Process -FilePath "powershell.exe" `
- -ArgumentList "-ExecutionPolicy Bypass -File `"E:\PSScript\RCSubmit-Job.ps1`" -JobName `"$JCL`" -Env `"$Env`"" `
- -NoNewWindow -Wait -PassThru
- return $process.ExitCode
- }
-
- if ($exitCode -eq 0) {
- Write-Host "Job $JobName (JCL: $JCL) completed successfully at $(Get-Date)" -ForegroundColor Green
- } else {
- Write-Error "Job $JobName (JCL: $JCL) failed with exit code: $exitCode"
- }
-}
-catch {
- Write-Error "Job $JobName failed with error: $($_.Exception.Message)"
- $exitCode = 1
-}
-finally {
- # ------------------------------------------------------------
- # Log exit code to the appropriate database
- # ------------------------------------------------------------
- try {
- $connectionString = "Server=localhost;Database=$DatabaseName;Trusted_Connection=true;"
- $connection = New-Object System.Data.SqlClient.SqlConnection($connectionString)
- $connection.Open()
-
- $command = $connection.CreateCommand()
- $command.CommandText = @"
- INSERT INTO dbo.JobExitCodes (JobName, RunDate, ExitCode, RecordedTime)
- VALUES ('$JobName', CAST(GETDATE() AS DATE), $exitCode, GETDATE());
-"@
- $command.ExecuteNonQuery()
- $connection.Close()
- Write-Host "Exit code $exitCode logged to database $DatabaseName for job $JobName"
- }
- catch {
- $errorMsg = $_.Exception.Message
- Write-Host "Failed to log exit code to database $DatabaseName`: $errorMsg"
- }
-}
-
-exit $exitCode
\ No newline at end of file
diff --git a/SQLAgent/01_Devl/5_PowerShell_Scripts/RCSubmit-Job.ps1 b/SQLAgent/01_Devl/5_PowerShell_Scripts/RCSubmit-Job.ps1
deleted file mode 100644
index b9893d7..0000000
--- a/SQLAgent/01_Devl/5_PowerShell_Scripts/RCSubmit-Job.ps1
+++ /dev/null
@@ -1,108 +0,0 @@
-param(
- [string]$JobName,
- [string]$Env
-)
-
-# --- Parameter Validation ---
-if (-not $JobName) {
- Write-Host "JobName parameter is required" -ForegroundColor Red
- exit 1
-}
-if (-not $Env) {
- Write-Host "Environment (Env) parameter is required" -ForegroundColor Red
- exit 1
-}
-
-# --- Execute Job ---
-Write-Host "Submitting job: $JobName in environment: $Env" -ForegroundColor Cyan
-$output = & "$env:rcbin\submit.exe" -DSN="DOESTAX.$Env.JOBS.BATCH.LIB($JobName)"
-$exitCode = [int]$LASTEXITCODE
-$isSuccess = 0
-
-# --- Parse SYSLOG Path ---
-$syslogPath = $null
-$syslogFolder = "Not found"
-$content = @()
-$summary = @()
-
-try {
- $syslogPath = $output | Select-String -Pattern "SYSLOG=\[(.*)\]" | ForEach-Object { $_.Matches.Groups[1].Value }
-
- if ($syslogPath -and (Test-Path $syslogPath)) {
- $syslogFolder = Split-Path $syslogPath -Parent
- $content = Get-Content $syslogPath -ErrorAction Stop
- $summary = $content | Select-String -Pattern "%Job Overall Stats:" -Context 0,7 | ForEach-Object {
- $_.Context.PostContext | Select-Object -Skip 1 -First 5
- }
- } else {
- Write-Host "SYSLOG path not found or inaccessible: $syslogPath" -ForegroundColor Yellow
- $summary = @("SYSLOG file not found in output", "Raw output:", $output -join "`n")
- }
-}
-catch {
- Write-Host "Error processing SYSLOG: $($_.Exception.Message)" -ForegroundColor Yellow
- $summary = @("Error reading SYSLOG: $($_.Exception.Message)", "Raw output:", $output -join "`n")
-}
-
-# --- Evaluate Return Codes ---
-$successConditions = @(
- { $JobName -eq "GSIRQ300" -and $exitCode -eq 50 },
- { $JobName -eq "DTSGWAGE" -and $exitCode -eq 8 },
- { $JobName -eq "DTSGCHKS" -and $exitCode -eq 8 },
- { $JobName -eq "DTSGPAYT" -and $exitCode -eq 8 },
- { $JobName -eq "DTSBXACH" -and $exitCode -eq 2 },
- { $JobName -eq "DTSBXREL" -and $exitCode -eq 2 },
- { $JobName -eq "DTSMIN02" -and $exitCode -eq 4 },
- { $JobName -eq "DTSBE405" -and $exitCode -eq 910 },
- { $JobName -eq "DTSBXREJ" -and $exitCode -eq 4 },
- { $JobName -eq "DTSRQ444" -and $exitCode -eq 4 },
- { $exitCode -eq 0 }
-)
-
-if ($successConditions | Where-Object { & $_ }) {
- Write-Host "Job $JobName succeeded with code $exitCode" -ForegroundColor Green
- $isSuccess = 0
-} else {
- Write-Host "Job $JobName failed with code $exitCode" -ForegroundColor Red
- $isSuccess = 1
- # Only use error if we don't have a proper summary
- if ($summary.Count -eq 0) {
- $summary = @($Error[0])
- }
-}
-
-# --- Email Notification ---
-$smtpServer = "smtp4.dc.gov"
-$fromEmail = "Dutas@dc.gov"
-$toEmail = "zarath.lalputan@dc.gov"
-$ccEmail = @("srujani.chandragiri@dc.gov")
-
-$emailBody = @"
-
-DUTAS Batch Job: $JobName Execution Report
-==========================================
-$($summary -join "`n")
-==========================================
-
-Return Code: $exitCode
-Status: $(if ($isSuccess -eq 0) { "SUCCESS" } else { "FAILED" })
-JOBLOG Path: $syslogFolder
-
-"@
-
-try {
- Send-MailMessage -SmtpServer $smtpServer -Port 25 `
- -From $fromEmail -To $toEmail -Cc $ccEmail `
- -Subject "DUTAS-[$Env] Job Status: $JobName - $(if ($isSuccess -eq 0) { 'SUCCESS' } else { 'FAILED' })" `
- -Body $emailBody -BodyAsHtml
- Write-Host "Email sent successfully to $toEmail" -ForegroundColor Cyan
-}
-catch {
- Write-Host "Failed to send email: $($_.Exception.Message)" -ForegroundColor Yellow
-}
-
-Write-Host "`n---------------------------------------------"
-Write-Host "Job: $JobName | ExitCode: $exitCode | Status: $(if ($isSuccess -eq 0) { 'SUCCESS' } else { 'FAILED' })"
-Write-Host "---------------------------------------------`n"
-
-exit $isSuccess
\ No newline at end of file
diff --git a/SQLAgent/01_Devl/6_Backup_Restore/Backup-Restore-Guide.docx b/SQLAgent/01_Devl/6_Backup_Restore/Backup-Restore-Guide.docx
deleted file mode 100644
index c19787a..0000000
Binary files a/SQLAgent/01_Devl/6_Backup_Restore/Backup-Restore-Guide.docx and /dev/null differ
diff --git a/SQLAgent/01_Devl/6_Backup_Restore/Backup-SQLAgent.ps1 b/SQLAgent/01_Devl/6_Backup_Restore/Backup-SQLAgent.ps1
deleted file mode 100644
index 0271cda..0000000
--- a/SQLAgent/01_Devl/6_Backup_Restore/Backup-SQLAgent.ps1
+++ /dev/null
@@ -1,48 +0,0 @@
-# ===================================================================
-# SQL Agent Jobs Backup Script (PowerShell)
-# Modern Version using SqlServer module
-# & "E:\Neeraj\SqlAgent\v2\01_Devl\6_Backup\Backup-SQLAgent.ps1" `
-# -ServerName "DOES-DUTAS-SQL1" `
-# -BackupPath "\\DOES-RAINVM-DEV\E$\Neeraj\SqlAgent\Backup\"
-#
-# ===================================================================
-
-param (
- [Parameter(Mandatory = $true)]
- [string]$ServerName,
-
- [Parameter(Mandatory = $true)]
- [string]$BackupPath
-)
-
-# Load SQL Server PowerShell module
-Import-Module SqlServer -ErrorAction Stop
-
-# Create timestamp and output paths
-$Timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
-$ZipFile = Join-Path $BackupPath "SQLAgentJobs_$Timestamp.zip"
-
-# Ensure backup folder exists
-if (-not (Test-Path $BackupPath)) {
- New-Item -ItemType Directory -Path $BackupPath | Out-Null
-}
-
-# Connect to SQL Server
-$server = New-Object Microsoft.SqlServer.Management.Smo.Server $ServerName
-
-# Export all jobs as individual SQL scripts
-$JobFiles = @()
-foreach ($job in $server.JobServer.Jobs) {
- $SafeJobName = ($job.Name -replace '[\\/:*?"<>|]', '_')
- $FileName = Join-Path $BackupPath "$SafeJobName`_$Timestamp.sql"
- $job.Script() | Out-File -FilePath $FileName -Encoding UTF8
- $JobFiles += $FileName
-}
-
-# Compress all SQL files into a single ZIP
-Compress-Archive -Path $JobFiles -DestinationPath $ZipFile -Force
-
-# Optional: clean up individual .sql files
-# Remove-Item -Path $JobFiles
-
-Write-Host "SQL Agent jobs backup complete: $ZipFile" -ForegroundColor Green
diff --git a/SQLAgent/01_Devl/6_Backup_Restore/BackupDB.sql b/SQLAgent/01_Devl/6_Backup_Restore/BackupDB.sql
deleted file mode 100644
index 1412c11..0000000
--- a/SQLAgent/01_Devl/6_Backup_Restore/BackupDB.sql
+++ /dev/null
@@ -1,19 +0,0 @@
-USE master;
-GO
-
-DECLARE @SrcDB NVARCHAR(128) = 'DevlDUTASJobSchedule';
-DECLARE @BackupPath NVARCHAR(260) = '\\DOES-RAINVM-DEV\E$\Neeraj\SqlAgent\Backup\' + @SrcDB + '.bak';
-DECLARE @SQL NVARCHAR(MAX);
-
--- Dynamic SQL for backup
-SET @SQL = '
-BACKUP DATABASE [' + @SrcDB + ']
-TO DISK = N''' + @BackupPath + '''
-WITH INIT, COMPRESSION, STATS = 10;
-';
-
--- Execute backup
-EXEC(@SQL);
-
-PRINT 'Backup completed: ' + @BackupPath;
-GO
diff --git a/SQLAgent/01_Devl/6_Backup_Restore/Cleanup-SQLAgent.ps1 b/SQLAgent/01_Devl/6_Backup_Restore/Cleanup-SQLAgent.ps1
deleted file mode 100644
index edcb054..0000000
--- a/SQLAgent/01_Devl/6_Backup_Restore/Cleanup-SQLAgent.ps1
+++ /dev/null
@@ -1,45 +0,0 @@
-<#
-.SYNOPSIS
-Deletes SQL Agent jobs whose names start with a given environment prefix (e.g., DEVL, TEST, PROD).
-
-.PARAMETER ServerName
-SQL Server instance name (use FCI virtual name if clustered).
-
-.PARAMETER Env
-Environment prefix for job deletion (e.g., DEVL, TEST, PROD).
-
-.EXAMPLE
-.\Cleanup-SQLAgent.ps1 -ServerName "DOES-DUTAS-SQL1" -Env "DEVL"
-#>
-
-param (
- [Parameter(Mandatory = $true)]
- [string]$ServerName,
-
- [Parameter(Mandatory = $true)]
- [string]$Environment
-)
-
-# Load SQL Server module
-Import-Module SqlServer -ErrorAction Stop
-
-# Connect to SQL Server
-$server = New-Object Microsoft.SqlServer.Management.Smo.Server $ServerName
-
-# Create log file path (same folder as script)
-$ScriptRoot = Split-Path -Parent $MyInvocation.MyCommand.Definition
-$LogPath = Join-Path $ScriptRoot "CleanupSQLAgent_$($Environment)_$(Get-Date -Format 'yyyyMMdd_HHmmss').log"
-
-"=== SQL Agent Cleanup Started for $Environment : $(Get-Date) ===" | Out-File $LogPath -Encoding UTF8
-
-# Take a snapshot of all jobs first (avoids collection modification issue)
-$jobsToDelete = @($server.JobServer.Jobs | Where-Object { $_.Name -like "$Environment*" })
-
-foreach ($job in $jobsToDelete) {
- Write-Host "Deleting job: $($job.Name)" -ForegroundColor Yellow
- "Deleting job: $($job.Name)" | Out-File $LogPath -Append -Encoding UTF8
- $job.Drop()
-}
-
-"=== Cleanup Complete for $Environment : $(Get-Date) ===" | Out-File $LogPath -Append -Encoding UTF8
-Write-Host "All $Environment SQL Agent jobs deleted successfully." -ForegroundColor Green
diff --git a/SQLAgent/01_Devl/6_Backup_Restore/CleanupSQLAgent.sql b/SQLAgent/01_Devl/6_Backup_Restore/CleanupSQLAgent.sql
deleted file mode 100644
index 43ff71d..0000000
--- a/SQLAgent/01_Devl/6_Backup_Restore/CleanupSQLAgent.sql
+++ /dev/null
@@ -1,27 +0,0 @@
-USE msdb;
-GO
-
-DECLARE @EnvPrefix NVARCHAR(50) = N'DEVL'; -- <<< Change this to your environment prefix
-DECLARE @job_id UNIQUEIDENTIFIER;
-DECLARE @job_name NVARCHAR(200);
-
-DECLARE JobCursor CURSOR FOR
-SELECT job_id, name
-FROM msdb.dbo.sysjobs
-WHERE name LIKE @EnvPrefix + '%'; -- Only jobs starting with the given prefix
-
-OPEN JobCursor;
-FETCH NEXT FROM JobCursor INTO @job_id, @job_name;
-
-WHILE @@FETCH_STATUS = 0
-BEGIN
- PRINT 'Deleting job: ' + @job_name;
- EXEC msdb.dbo.sp_delete_job @job_id = @job_id;
- FETCH NEXT FROM JobCursor INTO @job_id, @job_name;
-END
-
-CLOSE JobCursor;
-DEALLOCATE JobCursor;
-
-PRINT 'All SQL Agent jobs starting with prefix ' + @EnvPrefix + ' deleted successfully.';
-GO
diff --git a/SQLAgent/01_Devl/6_Backup_Restore/Extract_Backup-SQLAgent.ps1 b/SQLAgent/01_Devl/6_Backup_Restore/Extract_Backup-SQLAgent.ps1
deleted file mode 100644
index 83fba92..0000000
--- a/SQLAgent/01_Devl/6_Backup_Restore/Extract_Backup-SQLAgent.ps1
+++ /dev/null
@@ -1,8 +0,0 @@
-$BackupZip = "\\DOES-RAINVM-DEV\E$\Neeraj\SqlAgent\Backup\SQLAgentJobs_20251018_153000.zip"
-$ExtractPath = "\\DOES-RAINVM-DEV\E$\Neeraj\SqlAgent\Restore\"
-
-# Create folder if not exist
-if (-not (Test-Path $ExtractPath)) { New-Item -ItemType Directory -Path $ExtractPath | Out-Null }
-
-# Extract the ZIP
-Expand-Archive -Path $BackupZip -DestinationPath $ExtractPath -Force
diff --git a/SQLAgent/01_Devl/6_Backup_Restore/RestoreDB.sql b/SQLAgent/01_Devl/6_Backup_Restore/RestoreDB.sql
deleted file mode 100644
index 60978a2..0000000
--- a/SQLAgent/01_Devl/6_Backup_Restore/RestoreDB.sql
+++ /dev/null
@@ -1,31 +0,0 @@
-USE master;
-GO
-
-DECLARE @SrcDB NVARCHAR(128) = 'DevlDUTASJobSchedule'; -- original database
-DECLARE @NewDB NVARCHAR(128) = 'DevlDUTASJobSchedule'; -- database name to restore as
-DECLARE @BackupPath NVARCHAR(260) = '\\DOES-RAINVM-DEV\E$\Neeraj\SqlAgent\Backup\' + @SrcDB + '.bak';
-DECLARE @SQL NVARCHAR(MAX);
-
--- Optional: check logical file names inside backup
--- RESTORE FILELISTONLY FROM DISK = @BackupPath;
-
--- Dynamic SQL for restore
-SET @SQL = '
--- Optional: disconnect active connections
-ALTER DATABASE [' + @NewDB + '] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
-
-RESTORE DATABASE [' + @NewDB + ']
-FROM DISK = N''' + @BackupPath + '''
-WITH MOVE N''' + @SrcDB + ''' TO N''\\DOES-RAINVM-DEV\E$\SQLData\' + @NewDB + '.mdf'',
- MOVE N''' + @SrcDB + '_log'' TO N''\\DOES-RAINVM-DEV\E$\SQLLogs\' + @NewDB + '_log.ldf'',
- REPLACE, STATS = 10;
-
--- Set database back to multi-user
-ALTER DATABASE [' + @NewDB + '] SET MULTI_USER;
-';
-
--- Execute restore
-EXEC(@SQL);
-
-PRINT 'Database restored successfully as ' + @NewDB;
-GO
diff --git a/SQLAgent/01_Devl/6_Backup_Restore/RestoreSQLAgent.sql b/SQLAgent/01_Devl/6_Backup_Restore/RestoreSQLAgent.sql
deleted file mode 100644
index 697baeb..0000000
--- a/SQLAgent/01_Devl/6_Backup_Restore/RestoreSQLAgent.sql
+++ /dev/null
@@ -1,12 +0,0 @@
-# Connect to SQL Server
-$ServerName = "DOES-DUTAS-SQL1"
-$SqlInstance = "localhost" # or server instance name
-
-# Execute each script
-$ScriptFiles = Get-ChildItem -Path $ExtractPath -Filter *.sql
-foreach ($file in $ScriptFiles) {
- Write-Host "Restoring job from: $($file.FullName)"
- sqlcmd -S $SqlInstance -i $file.FullName
-}
-
-Write-Host "All SQL Agent jobs restored successfully."
diff --git a/SQLAgent/02_Test/1_Database_Setup/CreateDB.sql b/SQLAgent/02_Test/1_Database_Setup/CreateDB.sql
deleted file mode 100644
index bdc31a6..0000000
--- a/SQLAgent/02_Test/1_Database_Setup/CreateDB.sql
+++ /dev/null
@@ -1,83 +0,0 @@
--- Create the database
-CREATE DATABASE TestDUTASJobSchedule;
-GO
-
-USE TestDUTASJobSchedule;
-GO
-
--- Create the main control table
-CREATE TABLE dbo.JobControl
-(
- JobID INT IDENTITY(1,1) NOT NULL,
- JobName VARCHAR(50) NOT NULL,
- ScheduledStartTime TIME(7) NOT NULL,
- SchedulerAction VARCHAR(10) NOT NULL, -- STOP or CONTINUE
- IsActive BIT NOT NULL CONSTRAINT DF_JobControl_IsActive DEFAULT (1),
- CreatedDate DATETIME NOT NULL CONSTRAINT DF_JobControl_CreatedDate DEFAULT (GETDATE()),
- Frequency CHAR(20) NOT NULL CONSTRAINT DF_JobControl_Frequency DEFAULT ('DAILY'),
- FrequencyPattern NVARCHAR(500) NULL, -- JSON scheduling rule
-
- CONSTRAINT PK_JobControl PRIMARY KEY CLUSTERED (JobID ASC),
- CONSTRAINT UQ_JobControl_JobName UNIQUE NONCLUSTERED (JobName ASC),
- CONSTRAINT CK_JobControl_SchedulerAction CHECK (SchedulerAction IN ('STOP', 'CONTINUE'))
-);
-GO
-
--- Create job dependencies table
-CREATE TABLE dbo.JobDependencies (
- DependencyID INT IDENTITY(1,1) PRIMARY KEY,
- JobName VARCHAR(50) NOT NULL,
- PredecessorJobName VARCHAR(50) NULL,
- FOREIGN KEY (JobName) REFERENCES dbo.JobControl(JobName)
-);
-GO
-
--- Create execution history table
-CREATE TABLE dbo.JobExecutionHistory (
- ExecutionID INT IDENTITY(1,1) PRIMARY KEY,
- JobName VARCHAR(50) NOT NULL,
- RunDate DATE NOT NULL,
- ScheduledStartTime TIME NOT NULL,
- ActualStartTime DATETIME NULL,
- ActualEndTime DATETIME NULL,
- Status VARCHAR(20) DEFAULT 'Pending' CHECK (Status IN ('Pending', 'Running', 'Success', 'Failed', 'ForceComplete')),
- ErrorMessage VARCHAR(MAX) NULL,
- OverrideFlag BIT DEFAULT 0,
- OverrideBy VARCHAR(100) NULL,
- OverrideDate DATETIME NULL
-);
-GO
-
--- Create holidays table
-CREATE TABLE dbo.FederalHolidays (
- HolidayID INT IDENTITY(1,1) PRIMARY KEY,
- HolidayDate DATE NOT NULL UNIQUE,
- HolidayName VARCHAR(100) NOT NULL,
- Year INT NOT NULL
-);
-GO
-
--- Create Exit Code table for PowerShell Script
-CREATE TABLE dbo.JobExitCodes
-(
- JobExecutionID INT IDENTITY(1,1) PRIMARY KEY, -- unique ID per execution
- JobName NVARCHAR(128) NOT NULL, -- job name
- RunDate DATE NOT NULL, -- date of execution
- ExitCode INT NOT NULL, -- exit code from job
- RecordedTime DATETIME NOT NULL DEFAULT GETDATE() -- timestamp of execution
-);
-GO
--- Create JobSchedule table
-CREATE TABLE dbo.JobSchedule (
- JobScheduleID INT IDENTITY(1,1) PRIMARY KEY,
- JobName VARCHAR(100) NOT NULL,
- Frequency VARCHAR(20) CHECK (Frequency IN ('Monthly','Quarterly')),
- ScheduledRule NVARCHAR(500) NULL, -- Copy of JSON or rule text from JobControl
- ScheduledDate DATE NOT NULL, -- Planned date (before adjustment)
- AdjustedRunDate DATE NOT NULL, -- Final working-day adjusted date
- MonthOfSchedule CHAR(7) NOT NULL, -- 'YYYY-MM'
- YearOfSchedule INT NOT NULL,
- CreatedOn DATETIME DEFAULT GETDATE(),
- CreatedBy VARCHAR(50) DEFAULT SUSER_SNAME()
-);
-GO
\ No newline at end of file
diff --git a/SQLAgent/02_Test/1_Database_Setup/InsertHolidays.sql b/SQLAgent/02_Test/1_Database_Setup/InsertHolidays.sql
deleted file mode 100644
index e517718..0000000
--- a/SQLAgent/02_Test/1_Database_Setup/InsertHolidays.sql
+++ /dev/null
@@ -1,29 +0,0 @@
-USE [TestDUTASJobSchedule]
-GO
-SET IDENTITY_INSERT [dbo].[FederalHolidays] ON
-GO
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (1, CAST(N'2025-01-01' AS Date), N'New Years Day', 2025)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (2, CAST(N'2025-01-20' AS Date), N'Martin Luther King Day', 2025)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (3, CAST(N'2025-02-17' AS Date), N'Presidents Day', 2025)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (4, CAST(N'2025-05-26' AS Date), N'Memorial Day', 2025)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (5, CAST(N'2025-06-19' AS Date), N'Juneteenth Day', 2025)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (6, CAST(N'2025-07-04' AS Date), N'Independence Day', 2025)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (7, CAST(N'2025-09-01' AS Date), N'Labor Day', 2025)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (8, CAST(N'2025-10-13' AS Date), N'Columbus Day', 2025)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (9, CAST(N'2025-11-11' AS Date), N'Veterans Day', 2025)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (10, CAST(N'2025-11-27' AS Date), N'Thanksgiving Day', 2025)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (11, CAST(N'2025-12-25' AS Date), N'Christmas Day', 2025)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (12, CAST(N'2026-01-01' AS Date), N'New Years Day', 2026)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (13, CAST(N'2026-01-19' AS Date), N'Martin Luther King Day', 2026)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (14, CAST(N'2026-02-16' AS Date), N'Presidents Day', 2026)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (15, CAST(N'2026-05-25' AS Date), N'Memorial Day', 2026)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (16, CAST(N'2026-06-19' AS Date), N'Juneteenth Day', 2026)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (17, CAST(N'2026-07-03' AS Date), N'Independence Day', 2026)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (18, CAST(N'2026-09-07' AS Date), N'Labor Day', 2026)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (19, CAST(N'2026-10-12' AS Date), N'Columbus Day', 2026)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (20, CAST(N'2026-11-11' AS Date), N'Veterans Day', 2026)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (21, CAST(N'2026-11-26' AS Date), N'Thanksgiving Day', 2026)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (22, CAST(N'2026-12-25' AS Date), N'Christmas Day', 2026)
-GO
-SET IDENTITY_INSERT [dbo].[FederalHolidays] OFF
-GO
diff --git a/SQLAgent/02_Test/1_Database_Setup/InsertJobControl.sql b/SQLAgent/02_Test/1_Database_Setup/InsertJobControl.sql
deleted file mode 100644
index 119af04..0000000
--- a/SQLAgent/02_Test/1_Database_Setup/InsertJobControl.sql
+++ /dev/null
@@ -1,143 +0,0 @@
-USE [TestDUTASJobSchedule]
-GO
-SET IDENTITY_INSERT [dbo].[JobControl] ON
-GO
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (1, N'TEST_DAILY_DTSBX215', CAST(N'04:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (2, N'TEST_DAILY_DTSBX305', CAST(N'04:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (3, N'TEST_DAILY_DTSGSID0', CAST(N'06:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (4, N'TEST_DAILY_GSIRQ300', CAST(N'06:05:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (5, N'TEST_DAILY_DTSRQ202', CAST(N'06:10:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (6, N'TEST_DAILY_DTSGSID1', CAST(N'06:15:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (7, N'TEST_DAILY_DTSBX202', CAST(N'07:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (8, N'TEST_DAILY_DTSFT202', CAST(N'08:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (9, N'TEST_DAILY_DTSBX432', CAST(N'08:30:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (10, N'TEST_DAILY_DTSGACHD', CAST(N'09:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (11, N'TEST_DAILY_DTSBX303', CAST(N'10:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (12, N'TEST_DAILY_DTSGWAGE', CAST(N'14:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (13, N'TEST_DAILY_DTSGCHKS', CAST(N'14:05:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (14, N'TEST_DAILY_DTSESDAY', CAST(N'14:05:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (15, N'TEST_DAILY_DTSGPAYT', CAST(N'14:10:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (16, N'TEST_DAILY_DTSDX145', CAST(N'16:05:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (17, N'TEST_DAILY_DTSBX629', CAST(N'16:15:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (18, N'TEST_DAILY_DTSBX630', CAST(N'16:30:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (19, N'TEST_DAILY_DTSFRAUD', CAST(N'16:30:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (20, N'TEST_DAILY_DTSRACHD', CAST(N'17:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (21, N'TEST_DAILY_DTSBXACH', CAST(N'17:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (22, N'TEST_DAILY_DTSBXREG', CAST(N'17:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (23, N'TEST_DAILY_DTSBX430', CAST(N'17:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (24, N'TEST_DAILY_DTSBX626', CAST(N'17:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (25, N'TEST_DAILY_DTSBX530', CAST(N'17:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (26, N'TEST_DAILY_DTSBXREL', CAST(N'17:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (27, N'TEST_DAILY_DTSBX450', CAST(N'17:15:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (28, N'TEST_DAILY_DTSBX451', CAST(N'17:15:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (29, N'TEST_DAILY_DTSPACHD', CAST(N'18:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (30, N'TEST_DAILY_DTSPX148', CAST(N'18:05:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (31, N'TEST_DAILY_DTSRQ325', CAST(N'18:05:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (32, N'TEST_DAILY_DTSBX427', CAST(N'18:07:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (33, N'TEST_DAILY_DTSPDAY1', CAST(N'18:10:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (34, N'TEST_DAILY_DTSW4WGE', CAST(N'18:15:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (35, N'TEST_DAILY_DTSGSID2', CAST(N'18:15:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (36, N'TEST_DAILY_DTSGSID9', CAST(N'18:15:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (37, N'TEST_DAILY_DTSMIN01', CAST(N'18:20:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (38, N'TEST_DAILY_DTSMIN02', CAST(N'18:20:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (39, N'TEST_DAILY_DTSRQ459', CAST(N'19:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (40, N'TEST_DAILY_DTSBXPFL', CAST(N'19:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (41, N'TEST_DAILY_DESBD427', CAST(N'19:05:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (42, N'TEST_DAILY_DTSBX403', CAST(N'20:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (43, N'TEST_DAILY_DTSBE405', CAST(N'20:15:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (44, N'TEST_DAILY_DTSBX405', CAST(N'20:15:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (45, N'TEST_DAILY_DTSRQ335', CAST(N'21:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (46, N'TEST_DAILY_DTSBX601', CAST(N'21:25:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (47, N'TEST_WEEKLY_DTSGSID0', CAST(N'06:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Sat","Sun"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (48, N'TEST_WEEKLY_DTSGSID1', CAST(N'06:15:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Sat","Sun"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (49, N'TEST_WEEKLY_DTSBX202', CAST(N'07:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Sat","Sun"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (50, N'TEST_WEEKLY_DTSFT202', CAST(N'08:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Sat","Sun"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (51, N'TEST_WEEKLY_DTSBX470', CAST(N'07:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (52, N'TEST_WEEKLY_DTSBXREJ', CAST(N'17:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Tue","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (53, N'TEST_WEEKLY_DTSPDAY7', CAST(N'19:10:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (54, N'TEST_WEEKLY_DTSBX122', CAST(N'19:14:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (55, N'TEST_WEEKLY_DTSRQ511', CAST(N'19:14:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (56, N'TEST_WEEKLY_DTSRQ444', CAST(N'07:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Mon"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (57, N'TEST_WEEKLY_DTSRQ126', CAST(N'09:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Mon"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (58, N'TEST_MONTHLY_DTSRQ414', CAST(N'18:15:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"FirstWorkday"}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (59, N'TEST_MONTHLY_DTSPMON1', CAST(N'19:15:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"LastWorkday"}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (60, N'TEST_MONTHLY_DTSCHGVB', CAST(N'19:26:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"LastWorkday"}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (61, N'TEST_MONTHLY_DTSCHGVR', CAST(N'19:27:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"LastWorkday"}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (62, N'TEST_MONTHLY_DTSVBKUP', CAST(N'19:26:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"LastWorkday"}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (63, N'TEST_MONTHLY_DTSVRSTR', CAST(N'19:30:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"LastWorkday"}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (64, N'TEST_MONTHLY_DTSRQ442', CAST(N'19:37:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"LastWorkday"}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (65, N'TEST_MONTHLY_DTSBX460', CAST(N'19:35:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"LastWorkday"}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (66, N'TEST_MONTHLY_DTSRQ513', CAST(N'19:37:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"LastWorkday"}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (67, N'TEST_MONTHLY_DTSCHGDC', CAST(N'13:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"FirstWorkday"}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (68, N'TEST_QUARTERLY_DTSRQ119', CAST(N'18:07:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Months":[3,6,9,12],"Day":3}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (69, N'TEST_QUARTERLY_DTSRQ902', CAST(N'18:16:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Months":[3,6,9,12],"Day":1}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (70, N'TEST_QUARTERLY_DTSBX500', CAST(N'21:25:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Months":[3,6,9,12],"Day":1}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (71, N'TEST_QUARTERLY_DTSRQ417', CAST(N'18:07:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Schedule":[{"Month":2,"Day":28},{"Month":5,"Day":31},{"Month":8,"Day":31},{"Month":11,"Day":30}]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (72, N'TEST_QUARTERLY_DTSRQ320', CAST(N'18:07:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Schedule":[{"Month":2,"Day":10},{"Month":5,"Day":10},{"Month":8,"Day":10},{"Month":11,"Day":10}]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (73, N'TEST_QUARTERLY_DTSRQ713', CAST(N'00:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Schedule":[{"Month":3,"Day":31},{"Month":6,"Day":30},{"Month":9,"Day":30},{"Month":12,"Day":31}]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (74, N'TEST_QUARTERLY_DTSBX468', CAST(N'15:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Schedule":[{"Month":2,"Day":28},{"Month":5,"Day":30},{"Month":7,"Day":31},{"Month":10,"Day":30}]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (75, N'TEST_QUARTERLY_DTSCHGQ1', CAST(N'18:07:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Rule":"FirstWorkdayOfQuarter"}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (76, N'TEST_QUARTERLY_DTSCHGQ2', CAST(N'18:16:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Rule":"FirstWorkdayOfQuarter"}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (77, N'TEST_QUARTERLY_DTSRQ327', CAST(N'18:07:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Schedule":[{"Month":2,"Day":7},{"Month":5,"Day":7},{"Month":8,"Day":7},{"Month":11,"Day":7}]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (78, N'TEST_QUARTERLY_DTSRQ328', CAST(N'18:16:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Schedule":[{"Month":2,"Day":7},{"Month":5,"Day":7},{"Month":8,"Day":7},{"Month":11,"Day":7}]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (79, N'TEST_QUARTERLY_DTSRQ412', CAST(N'18:07:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Schedule":[{"Month":1,"Day":15},{"Month":4,"Day":15},{"Month":7,"Day":15},{"Month":10,"Day":15}]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (80, N'TEST_QUARTERLY_DTSRQ793', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (81, N'TEST_QUARTERLY_DTSWGE06', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (82, N'TEST_QUARTERLY_DTSCHGRT', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (83, N'TEST_QUARTERLY_DTSCHRGS', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (84, N'TEST_QUARTERLY_DTSRQ540', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (85, N'TEST_QUARTERLY_DTSRQ591', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (86, N'TEST_QUARTERLY_DTSRTCHG', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (87, N'TEST_QUARTERLY_DTSWGE01', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (88, N'TEST_QUARTERLY_DESBD426', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (89, N'TEST_ONDEMAND_DTSACH01', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (90, N'TEST_ONDEMAND_DTSBX415', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (91, N'TEST_ONDEMAND_DTSBX452', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (92, N'TEST_ONDEMAND_DTSBX453', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (93, N'TEST_ONDEMAND_DTSRQ120', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (94, N'TEST_ONDEMAND_DTSRQ123', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (95, N'TEST_ONDEMAND_DTSRQ125', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (96, N'TEST_ONDEMAND_DTSRQ305', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (97, N'TEST_ONDEMAND_DTSRQ306', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (98, N'TEST_ONDEMAND_DTSRQ308', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (99, N'TEST_ONDEMAND_DTSRQ311', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (100, N'TEST_ONDEMAND_DTSRQ410', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (101, N'TEST_ONDEMAND_DTSRQ411', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (102, N'TEST_ONDEMAND_DTSRQ423', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (103, N'TEST_ONDEMAND_DTSRQ426', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (104, N'TEST_ONDEMAND_DTSRQ429', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (105, N'TEST_ONDEMAND_DTSRQ439', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (106, N'TEST_ONDEMAND_DTSRQ602', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (107, N'TEST_ONDEMAND_DTSRQ606', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (108, N'TEST_ONDEMAND_DTSRQ607', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (109, N'TEST_ONDEMAND_DTSRQ609', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (110, N'TEST_ONDEMAND_DTSRQ611', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (111, N'TEST_ONDEMAND_DTSRQ612', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (112, N'TEST_ONDEMAND_DTSRQ717', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (113, N'TEST_ONDEMAND_DTSRQ718', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (114, N'TEST_ONDEMAND_DTSRQ720', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (115, N'TEST_ONDEMAND_DTSRQ721', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (116, N'TEST_ONDEMAND_DTSRT715', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (117, N'TEST_ONDEMAND_DTSRT716', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (118, N'TEST_ONDEMAND_DTSRT717', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (119, N'TEST_ONDEMAND_DTSRT718', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (120, N'TEST_ONDEMAND_DTSRT719', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (121, N'TEST_ONDEMAND_DTSRT720', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (122, N'TEST_ONDEMAND_DTSRT722', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (123, N'TEST_ONDEMAND_DTSRT723', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (124, N'TEST_YEARLY_DTSRQ722', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (125, N'TEST_YEARLY_DTSRQ451', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (126, N'TEST_YEARLY_DTSRQ127', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (127, N'TEST_YEARLY_DTSRQ321', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (128, N'TEST_YEARLY_DTSRQ455', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (129, N'TEST_YEARLY_DTSRQ500', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (130, N'TEST_YEARLY_DTSRQ517', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (131, N'TEST_YEARLY_DTSRQ518', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (132, N'TEST_YEARLY_DTSRQ616', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (133, N'TEST_YEARLY_DTSRQ701', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (134, N'TEST_YEARLY_DTSRQ702', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (135, N'TEST_YEARLY_DTSRQ704', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (136, N'TEST_YEARLY_DTSRQ910', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-GO
-SET IDENTITY_INSERT [dbo].[JobControl] OFF
-GO
\ No newline at end of file
diff --git a/SQLAgent/02_Test/1_Database_Setup/InsertJobDependencies.sql b/SQLAgent/02_Test/1_Database_Setup/InsertJobDependencies.sql
deleted file mode 100644
index 0f84ae3..0000000
--- a/SQLAgent/02_Test/1_Database_Setup/InsertJobDependencies.sql
+++ /dev/null
@@ -1,92 +0,0 @@
-USE [TestDUTASJobSchedule]
-GO
-SET IDENTITY_INSERT [dbo].[JobDependencies] ON
-GO
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (1, N'TEST_DAILY_DTSGSID0', N'TEST_DAILY_DTSBX305')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (2, N'TEST_DAILY_GSIRQ300', N'TEST_DAILY_DTSBX305')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (3, N'TEST_DAILY_DTSRQ202', N'TEST_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (4, N'TEST_DAILY_DTSGSID1', N'TEST_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (5, N'TEST_DAILY_DTSBX202', N'TEST_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (6, N'TEST_DAILY_DTSFT202', N'TEST_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (7, N'TEST_DAILY_DTSBX432', N'TEST_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (8, N'TEST_DAILY_DTSGACHD', N'TEST_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (9, N'TEST_DAILY_DTSBX303', N'TEST_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (10, N'TEST_DAILY_DTSGWAGE', N'TEST_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (11, N'TEST_DAILY_DTSGCHKS', N'TEST_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (12, N'TEST_DAILY_DTSESDAY', N'TEST_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (13, N'TEST_DAILY_DTSGPAYT', N'TEST_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (14, N'TEST_DAILY_DTSDX145', N'TEST_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (15, N'TEST_DAILY_DTSBX629', N'TEST_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (16, N'TEST_DAILY_DTSBX630', N'TEST_DAILY_DTSBX629')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (17, N'TEST_DAILY_DTSFRAUD', N'TEST_DAILY_DTSBX629')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (18, N'TEST_DAILY_DTSRACHD', N'TEST_DAILY_DTSFRAUD')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (19, N'TEST_DAILY_DTSBXACH', N'TEST_DAILY_DTSFRAUD')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (20, N'TEST_DAILY_DTSBXREG', N'TEST_DAILY_DTSFRAUD')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (21, N'TEST_DAILY_DTSBX430', N'TEST_DAILY_DTSFRAUD')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (22, N'TEST_DAILY_DTSBX626', N'TEST_DAILY_DTSFRAUD')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (23, N'TEST_DAILY_DTSBX530', N'TEST_DAILY_DTSFRAUD')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (24, N'TEST_DAILY_DTSBXREL', N'TEST_DAILY_DTSFRAUD')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (25, N'TEST_DAILY_DTSBX450', N'TEST_DAILY_DTSBXACH')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (26, N'TEST_DAILY_DTSBX450', N'TEST_DAILY_DTSBXREG')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (27, N'TEST_DAILY_DTSBX450', N'TEST_DAILY_DTSBX430')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (28, N'TEST_DAILY_DTSBX450', N'TEST_DAILY_DTSBX626')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (29, N'TEST_DAILY_DTSBX450', N'TEST_DAILY_DTSBX530')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (30, N'TEST_DAILY_DTSBX450', N'TEST_DAILY_DTSBXREL')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (31, N'TEST_DAILY_DTSBX451', N'TEST_DAILY_DTSBXACH')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (32, N'TEST_DAILY_DTSBX451', N'TEST_DAILY_DTSBXREG')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (33, N'TEST_DAILY_DTSBX451', N'TEST_DAILY_DTSBX430')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (34, N'TEST_DAILY_DTSBX451', N'TEST_DAILY_DTSBX626')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (35, N'TEST_DAILY_DTSBX451', N'TEST_DAILY_DTSBX530')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (36, N'TEST_DAILY_DTSBX451', N'TEST_DAILY_DTSBXREL')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (37, N'TEST_DAILY_DTSPACHD', N'TEST_DAILY_DTSBX450')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (38, N'TEST_DAILY_DTSPACHD', N'TEST_DAILY_DTSBX451')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (39, N'TEST_DAILY_DTSPX148', N'TEST_DAILY_DTSPACHD')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (40, N'TEST_DAILY_DTSRQ325', N'TEST_DAILY_DTSPACHD')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (41, N'TEST_DAILY_DTSBX427', N'TEST_DAILY_DTSPX148')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (42, N'TEST_DAILY_DTSBX427', N'TEST_DAILY_DTSRQ325')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (43, N'TEST_DAILY_DTSPDAY1', N'TEST_DAILY_DTSBX427')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (44, N'TEST_DAILY_DTSW4WGE', N'TEST_DAILY_DTSPDAY1')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (45, N'TEST_DAILY_DTSGSID2', N'TEST_DAILY_DTSPDAY1')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (46, N'TEST_DAILY_DTSGSID9', N'TEST_DAILY_DTSPDAY1')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (47, N'TEST_DAILY_DTSMIN01', N'TEST_DAILY_DTSW4WGE')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (48, N'TEST_DAILY_DTSMIN01', N'TEST_DAILY_DTSGSID2')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (49, N'TEST_DAILY_DTSMIN01', N'TEST_DAILY_DTSGSID9')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (50, N'TEST_DAILY_DTSMIN02', N'TEST_DAILY_DTSW4WGE')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (51, N'TEST_DAILY_DTSMIN02', N'TEST_DAILY_DTSGSID2')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (52, N'TEST_DAILY_DTSMIN02', N'TEST_DAILY_DTSGSID9')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (53, N'TEST_DAILY_DTSRQ459', N'TEST_DAILY_DTSMIN01')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (54, N'TEST_DAILY_DTSRQ459', N'TEST_DAILY_DTSMIN02')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (55, N'TEST_DAILY_DTSBXPFL', N'TEST_DAILY_DTSRQ459')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (56, N'TEST_DAILY_DESBD427', N'TEST_DAILY_DTSBXPFL')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (57, N'TEST_DAILY_DTSBX403', N'TEST_DAILY_DTSBXPFL')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (58, N'TEST_DAILY_DTSBE405', N'TEST_DAILY_DTSBXPFL')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (59, N'TEST_DAILY_DTSBX405', N'TEST_DAILY_DTSBXPFL')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (60, N'TEST_DAILY_DTSRQ335', N'TEST_DAILY_DTSBXPFL')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (61, N'TEST_DAILY_DTSBX601', N'TEST_DAILY_DTSRQ335')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (62, N'TEST_WEEKLY_DTSBXREJ', N'TEST_DAILY_DTSBXREL')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (63, N'TEST_WEEKLY_DTSBX122', N'TEST_WEEKLY_DTSPDAY7')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (64, N'TEST_WEEKLY_DTSRQ511', N'TEST_WEEKLY_DTSPDAY7')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (65, N'TEST_MONTHLY_DTSRQ414', N'TEST_DAILY_DTSPDAY1')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (66, N'TEST_MONTHLY_DTSCHGVB', N'TEST_MONTHLY_DTSPMON1')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (67, N'TEST_MONTHLY_DTSCHGVR', N'TEST_MONTHLY_DTSCHGVB')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (68, N'TEST_MONTHLY_DTSVBKUP', N'TEST_MONTHLY_DTSPMON1')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (69, N'TEST_MONTHLY_DTSVRSTR', N'TEST_MONTHLY_DTSVBKUP')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (70, N'TEST_MONTHLY_DTSRQ442', N'TEST_MONTHLY_DTSRQ513')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (71, N'TEST_QUARTERLY_DTSRQ119', N'TEST_DAILY_DTSRQ325')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (72, N'TEST_QUARTERLY_DTSRQ417', N'TEST_DAILY_DTSRQ325')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (73, N'TEST_QUARTERLY_DTSRQ320', N'TEST_DAILY_DTSRQ325')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (74, N'TEST_QUARTERLY_DTSRQ793', N'TEST_DAILY_DTSRQ325')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (75, N'TEST_QUARTERLY_DTSCHGQ1', N'TEST_DAILY_DTSRQ325')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (76, N'TEST_QUARTERLY_DTSRQ327', N'TEST_DAILY_DTSRQ325')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (77, N'TEST_QUARTERLY_DTSRQ412', N'TEST_DAILY_DTSRQ325')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (78, N'TEST_QUARTERLY_DTSRQ591', N'TEST_DAILY_DTSRQ325')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (79, N'TEST_QUARTERLY_DTSRQ902', N'TEST_DAILY_DTSPDAY1')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (80, N'TEST_QUARTERLY_DTSCHGQ2', N'TEST_DAILY_DTSPDAY1')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (81, N'TEST_QUARTERLY_DTSCHGRT', N'TEST_QUARTERLY_DTSRQ591')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (82, N'TEST_QUARTERLY_DTSRQ328', N'TEST_QUARTERLY_DTSRQ327')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (83, N'TEST_QUARTERLY_DTSBX500', N'TEST_QUARTERLY_DTSRQ417')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (84, N'TEST_QUARTERLY_DTSRQ713', N'TEST_MONTHLY_DTSPMON1')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (85, N'TEST_QUARTERLY_DTSCHRGS', N'TEST_QUARTERLY_DTSCHGRT')
-GO
-SET IDENTITY_INSERT [dbo].[JobDependencies] OFF
-GO
diff --git a/SQLAgent/02_Test/2_Functions/fn_GetNextWorkday.sql b/SQLAgent/02_Test/2_Functions/fn_GetNextWorkday.sql
deleted file mode 100644
index 6f2e39a..0000000
--- a/SQLAgent/02_Test/2_Functions/fn_GetNextWorkday.sql
+++ /dev/null
@@ -1,17 +0,0 @@
-USE TestDUTASJobSchedule;
-GO
--- Returns the next valid workday on or after the given date
-CREATE OR ALTER FUNCTION dbo.fn_GetNextWorkday (@InputDate DATE)
-RETURNS DATE
-AS
-BEGIN
- DECLARE @Workday DATE = @InputDate;
-
- WHILE DATENAME(WEEKDAY, @Workday) IN ('Saturday','Sunday')
- OR EXISTS (SELECT 1 FROM dbo.FederalHolidays WHERE HolidayDate = @Workday)
- BEGIN
- SET @Workday = DATEADD(DAY, 1, @Workday);
- END
-
- RETURN @Workday;
-END;
diff --git a/SQLAgent/02_Test/2_Functions/fn_GetPreviousWorkday.sql b/SQLAgent/02_Test/2_Functions/fn_GetPreviousWorkday.sql
deleted file mode 100644
index 88aab72..0000000
--- a/SQLAgent/02_Test/2_Functions/fn_GetPreviousWorkday.sql
+++ /dev/null
@@ -1,17 +0,0 @@
-USE TestDUTASJobSchedule;
-GO
--- Returns the most recent valid workday before or equal to the given date
-CREATE OR ALTER FUNCTION dbo.fn_GetPreviousWorkday (@InputDate DATE)
-RETURNS DATE
-AS
-BEGIN
- DECLARE @Workday DATE = @InputDate;
-
- WHILE DATENAME(WEEKDAY, @Workday) IN ('Saturday','Sunday')
- OR EXISTS (SELECT 1 FROM dbo.FederalHolidays WHERE HolidayDate = @Workday)
- BEGIN
- SET @Workday = DATEADD(DAY, -1, @Workday);
- END
-
- RETURN @Workday;
-END;
diff --git a/SQLAgent/02_Test/2_Stored_Procedures/usp_CheckJobConditions.sql b/SQLAgent/02_Test/2_Stored_Procedures/usp_CheckJobConditions.sql
deleted file mode 100644
index 42f3b01..0000000
Binary files a/SQLAgent/02_Test/2_Stored_Procedures/usp_CheckJobConditions.sql and /dev/null differ
diff --git a/SQLAgent/02_Test/2_Stored_Procedures/usp_CheckJobConditions_Generic.sql b/SQLAgent/02_Test/2_Stored_Procedures/usp_CheckJobConditions_Generic.sql
deleted file mode 100644
index d009605..0000000
Binary files a/SQLAgent/02_Test/2_Stored_Procedures/usp_CheckJobConditions_Generic.sql and /dev/null differ
diff --git a/SQLAgent/02_Test/2_Stored_Procedures/usp_CreateSQLAgentJob.sql b/SQLAgent/02_Test/2_Stored_Procedures/usp_CreateSQLAgentJob.sql
deleted file mode 100644
index f6702a8..0000000
Binary files a/SQLAgent/02_Test/2_Stored_Procedures/usp_CreateSQLAgentJob.sql and /dev/null differ
diff --git a/SQLAgent/02_Test/2_Stored_Procedures/usp_ForceComplete.sql b/SQLAgent/02_Test/2_Stored_Procedures/usp_ForceComplete.sql
deleted file mode 100644
index 3b107b2..0000000
Binary files a/SQLAgent/02_Test/2_Stored_Procedures/usp_ForceComplete.sql and /dev/null differ
diff --git a/SQLAgent/02_Test/2_Stored_Procedures/usp_ScheduleMonthlyJob.sql b/SQLAgent/02_Test/2_Stored_Procedures/usp_ScheduleMonthlyJob.sql
deleted file mode 100644
index 37709c5..0000000
Binary files a/SQLAgent/02_Test/2_Stored_Procedures/usp_ScheduleMonthlyJob.sql and /dev/null differ
diff --git a/SQLAgent/02_Test/2_Stored_Procedures/usp_TriggerMissedJobs.sql b/SQLAgent/02_Test/2_Stored_Procedures/usp_TriggerMissedJobs.sql
deleted file mode 100644
index 53496ac..0000000
Binary files a/SQLAgent/02_Test/2_Stored_Procedures/usp_TriggerMissedJobs.sql and /dev/null differ
diff --git a/SQLAgent/02_Test/2_Stored_Procedures/usp_UpdateJobStatus_Generic.sql b/SQLAgent/02_Test/2_Stored_Procedures/usp_UpdateJobStatus_Generic.sql
deleted file mode 100644
index 6057d6e..0000000
Binary files a/SQLAgent/02_Test/2_Stored_Procedures/usp_UpdateJobStatus_Generic.sql and /dev/null differ
diff --git a/SQLAgent/02_Test/3_Job_Maintenance/ActivateMonthlyJob.sql b/SQLAgent/02_Test/3_Job_Maintenance/ActivateMonthlyJob.sql
deleted file mode 100644
index 9dede8c..0000000
--- a/SQLAgent/02_Test/3_Job_Maintenance/ActivateMonthlyJob.sql
+++ /dev/null
@@ -1,65 +0,0 @@
-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
diff --git a/SQLAgent/02_Test/3_Job_Maintenance/AddDailyJobs.sql b/SQLAgent/02_Test/3_Job_Maintenance/AddDailyJobs.sql
deleted file mode 100644
index 61174d5..0000000
--- a/SQLAgent/02_Test/3_Job_Maintenance/AddDailyJobs.sql
+++ /dev/null
@@ -1,279 +0,0 @@
-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';
\ No newline at end of file
diff --git a/SQLAgent/02_Test/3_Job_Maintenance/AddMonthlyJobs.sql b/SQLAgent/02_Test/3_Job_Maintenance/AddMonthlyJobs.sql
deleted file mode 100644
index 9840c8d..0000000
--- a/SQLAgent/02_Test/3_Job_Maintenance/AddMonthlyJobs.sql
+++ /dev/null
@@ -1,76 +0,0 @@
-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
diff --git a/SQLAgent/02_Test/3_Job_Maintenance/AddOneJob.sql b/SQLAgent/02_Test/3_Job_Maintenance/AddOneJob.sql
deleted file mode 100644
index e28ade8..0000000
--- a/SQLAgent/02_Test/3_Job_Maintenance/AddOneJob.sql
+++ /dev/null
@@ -1,9 +0,0 @@
-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';
\ No newline at end of file
diff --git a/SQLAgent/02_Test/3_Job_Maintenance/AddWeeklyJobs.sql b/SQLAgent/02_Test/3_Job_Maintenance/AddWeeklyJobs.sql
deleted file mode 100644
index 48fa74d..0000000
--- a/SQLAgent/02_Test/3_Job_Maintenance/AddWeeklyJobs.sql
+++ /dev/null
@@ -1,81 +0,0 @@
-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';
\ No newline at end of file
diff --git a/SQLAgent/02_Test/3_Job_Maintenance/DailyJobScheduleLookup.sql b/SQLAgent/02_Test/3_Job_Maintenance/DailyJobScheduleLookup.sql
deleted file mode 100644
index 94af6b1..0000000
--- a/SQLAgent/02_Test/3_Job_Maintenance/DailyJobScheduleLookup.sql
+++ /dev/null
@@ -1,86 +0,0 @@
-/********************************************************************************************
- 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:
- • Uses MSDB’s internal schedule definitions (sysschedules, sysjobschedules).
- • Supports One-time, Daily, Weekly, and Monthly schedule types.
- • 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
diff --git a/SQLAgent/02_Test/3_Job_Maintenance/DeactivateMonthlyJob.sql b/SQLAgent/02_Test/3_Job_Maintenance/DeactivateMonthlyJob.sql
deleted file mode 100644
index e72bae5..0000000
--- a/SQLAgent/02_Test/3_Job_Maintenance/DeactivateMonthlyJob.sql
+++ /dev/null
@@ -1,12 +0,0 @@
-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';
diff --git a/SQLAgent/02_Test/3_Job_Maintenance/DetachDeleteScheduleByName.sql b/SQLAgent/02_Test/3_Job_Maintenance/DetachDeleteScheduleByName.sql
deleted file mode 100644
index d646072..0000000
--- a/SQLAgent/02_Test/3_Job_Maintenance/DetachDeleteScheduleByName.sql
+++ /dev/null
@@ -1,13 +0,0 @@
--- 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;
diff --git a/SQLAgent/02_Test/3_Job_Maintenance/ForceCompleteJob.sql b/SQLAgent/02_Test/3_Job_Maintenance/ForceCompleteJob.sql
deleted file mode 100644
index 8577849..0000000
--- a/SQLAgent/02_Test/3_Job_Maintenance/ForceCompleteJob.sql
+++ /dev/null
@@ -1,16 +0,0 @@
-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);
\ No newline at end of file
diff --git a/SQLAgent/02_Test/3_Job_Maintenance/JobInfo.sql b/SQLAgent/02_Test/3_Job_Maintenance/JobInfo.sql
deleted file mode 100644
index 4cd23e4..0000000
--- a/SQLAgent/02_Test/3_Job_Maintenance/JobInfo.sql
+++ /dev/null
@@ -1,47 +0,0 @@
-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
diff --git a/SQLAgent/02_Test/3_Job_Maintenance/SQLAgentInfo.sql b/SQLAgent/02_Test/3_Job_Maintenance/SQLAgentInfo.sql
deleted file mode 100644
index d63458e..0000000
--- a/SQLAgent/02_Test/3_Job_Maintenance/SQLAgentInfo.sql
+++ /dev/null
@@ -1,42 +0,0 @@
-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
\ No newline at end of file
diff --git a/SQLAgent/02_Test/3_Job_Maintenance/TodaysExecution.sql b/SQLAgent/02_Test/3_Job_Maintenance/TodaysExecution.sql
deleted file mode 100644
index 7509ac0..0000000
--- a/SQLAgent/02_Test/3_Job_Maintenance/TodaysExecution.sql
+++ /dev/null
@@ -1,21 +0,0 @@
-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;
diff --git a/SQLAgent/02_Test/3_Job_Maintenance/TriggerMissedJob.sql b/SQLAgent/02_Test/3_Job_Maintenance/TriggerMissedJob.sql
deleted file mode 100644
index 5899713..0000000
--- a/SQLAgent/02_Test/3_Job_Maintenance/TriggerMissedJob.sql
+++ /dev/null
@@ -1,9 +0,0 @@
-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;
-
diff --git a/SQLAgent/02_Test/3_Stored_Procedures/usp_CheckJobConditions.sql b/SQLAgent/02_Test/3_Stored_Procedures/usp_CheckJobConditions.sql
deleted file mode 100644
index 42f3b01..0000000
Binary files a/SQLAgent/02_Test/3_Stored_Procedures/usp_CheckJobConditions.sql and /dev/null differ
diff --git a/SQLAgent/02_Test/3_Stored_Procedures/usp_CheckJobConditions_Generic.sql b/SQLAgent/02_Test/3_Stored_Procedures/usp_CheckJobConditions_Generic.sql
deleted file mode 100644
index d009605..0000000
Binary files a/SQLAgent/02_Test/3_Stored_Procedures/usp_CheckJobConditions_Generic.sql and /dev/null differ
diff --git a/SQLAgent/02_Test/3_Stored_Procedures/usp_CreateDailyJobSchedule.sql b/SQLAgent/02_Test/3_Stored_Procedures/usp_CreateDailyJobSchedule.sql
deleted file mode 100644
index c2cd1ea..0000000
--- a/SQLAgent/02_Test/3_Stored_Procedures/usp_CreateDailyJobSchedule.sql
+++ /dev/null
@@ -1,98 +0,0 @@
-USE msdb;
-GO
-
-CREATE OR ALTER PROCEDURE dbo.usp_CreateDailyJobSchedule
- @Env VARCHAR(10) = 'DEVL' -- Added parameter with default value
-AS
-BEGIN
- SET NOCOUNT ON;
-
- DECLARE
- @JobID INT,
- @JobName SYSNAME,
- @ScheduledStartTime TIME(0),
- @Frequency NVARCHAR(20),
- @FrequencyPattern NVARCHAR(MAX),
- @ScheduleName SYSNAME,
- @StartTimeInt INT,
- @FreqInterval INT,
- @TimeString VARCHAR(8),
- @ActiveStartDate INT,
- @dbName SYSNAME; -- Added variable for database name
-
- -- Determine database name based on environment
- SET @dbName = CASE @Env
- WHEN 'DEVL' THEN 'DevlDUTASJobSchedule'
- WHEN 'TEST' THEN 'TestDUTASJobSchedule'
- WHEN 'PROD' THEN 'ProdDUTASJobSchedule'
- END;
-
- -- Prepare active start date as INT (YYYYMMDD)
- SET @ActiveStartDate = CONVERT(INT, CONVERT(CHAR(8), GETDATE(), 112));
-
- -- Dynamic SQL to fetch jobs from the appropriate database
- DECLARE @Sql NVARCHAR(MAX);
- SET @Sql = N'
- DECLARE job_cursor CURSOR FOR
- SELECT JobID, JobName, ScheduledStartTime, Frequency, FrequencyPattern
- FROM ' + QUOTENAME(@dbName) + N'.dbo.JobControl
- WHERE UPPER(Frequency) = ''DAILY''
- AND IsActive = 1;';
-
- -- Execute dynamic SQL to declare cursor
- EXEC sp_executesql @Sql;
-
- OPEN job_cursor;
- FETCH NEXT FROM job_cursor INTO @JobID, @JobName, @ScheduledStartTime, @Frequency, @FrequencyPattern;
-
- WHILE @@FETCH_STATUS = 0
- BEGIN
- -- Step 1: Convert ScheduledStartTime (TIME) to HH:MM:SS string
- SET @TimeString = CONVERT(VARCHAR(8), @ScheduledStartTime, 108);
-
- -- Step 2: Remove colons and convert to INT (HHMMSS)
- SET @StartTimeInt = CONVERT(INT, REPLACE(@TimeString, ':', ''));
-
- -- Step 3: Prepare schedule name
- SET @ScheduleName = CONCAT(@JobName, '_DailySchedule');
-
- -- Step 4: Fixed freq_interval for Monday to Friday
- SET @FreqInterval = 62; -- Mon(2)+Tue(4)+Wed(8)+Thu(16)+Fri(32) = 62
-
- -- Step 5: Delete existing schedule if it exists (idempotency)
- IF EXISTS (
- SELECT 1
- FROM msdb.dbo.sysschedules s
- JOIN msdb.dbo.sysjobschedules js ON s.schedule_id = js.schedule_id
- JOIN msdb.dbo.sysjobs j ON j.job_id = js.job_id
- WHERE j.name = @JobName AND s.name = @ScheduleName
- )
- BEGIN
- EXEC msdb.dbo.sp_delete_schedule @schedule_name = @ScheduleName;
- END
-
- -- Step 6: Create weekly schedule (Monday to Friday) running once per day
- EXEC msdb.dbo.sp_add_schedule
- @schedule_name = @ScheduleName,
- @enabled = 1,
- @freq_type = 8, -- weekly
- @freq_interval = @FreqInterval,
- @freq_recurrence_factor = 1, -- every week
- @active_start_time = @StartTimeInt,
- @active_start_date = @ActiveStartDate;
-
- -- Step 7: Attach schedule to job
- EXEC msdb.dbo.sp_attach_schedule
- @job_name = @JobName,
- @schedule_name = @ScheduleName;
-
- -- Fetch next job
- FETCH NEXT FROM job_cursor INTO @JobID, @JobName, @ScheduledStartTime, @Frequency, @FrequencyPattern;
- END
-
- CLOSE job_cursor;
- DEALLOCATE job_cursor;
-
- PRINT 'Daily job schedules (Monday to Friday) created successfully for ' + @dbName;
-END;
-GO
\ No newline at end of file
diff --git a/SQLAgent/02_Test/3_Stored_Procedures/usp_CreateSQLAgentJob.sql b/SQLAgent/02_Test/3_Stored_Procedures/usp_CreateSQLAgentJob.sql
deleted file mode 100644
index cfba9e9..0000000
Binary files a/SQLAgent/02_Test/3_Stored_Procedures/usp_CreateSQLAgentJob.sql and /dev/null differ
diff --git a/SQLAgent/02_Test/3_Stored_Procedures/usp_CreateWeeklySchedules.sql b/SQLAgent/02_Test/3_Stored_Procedures/usp_CreateWeeklySchedules.sql
deleted file mode 100644
index 2021821..0000000
--- a/SQLAgent/02_Test/3_Stored_Procedures/usp_CreateWeeklySchedules.sql
+++ /dev/null
@@ -1,223 +0,0 @@
-USE [msdb];
-GO
-
-CREATE OR ALTER PROCEDURE dbo.usp_CreateWeeklySchedules
- @Env VARCHAR(10) = 'DEVL' -- Added parameter with default value
-AS
-BEGIN
- SET NOCOUNT ON;
-
- DECLARE
- @JobName SYSNAME,
- @FrequencyPattern NVARCHAR(MAX),
- @StartTime VARCHAR(50),
- @ScheduleName SYSNAME,
- @StartTimeInt INT,
- @FreqInterval INT,
- @ActiveDate INT,
- @computedFreq INT,
- @dbName SYSNAME; -- Added variable for database name
-
- -- Determine database name based on environment
- SET @dbName = CASE @Env
- WHEN 'DEVL' THEN 'DevlDUTASJobSchedule'
- WHEN 'TEST' THEN 'TestDUTASJobSchedule'
- WHEN 'PROD' THEN 'ProdDUTASJobSchedule'
- END;
-
- SET @ActiveDate = CONVERT(INT, CONVERT(CHAR(8), GETDATE(), 112));
-
- --------------------------------------------------------------------------
- -- Dynamic SQL for cursor to fetch active weekly jobs from appropriate database
- --------------------------------------------------------------------------
- DECLARE @Sql NVARCHAR(MAX);
- SET @Sql = N'
- DECLARE job_cursor CURSOR FAST_FORWARD FOR
- SELECT
- JobName,
- FrequencyPattern,
- ScheduledStartTime
- FROM ' + QUOTENAME(@dbName) + N'.dbo.JobControl
- WHERE UPPER(Frequency) = ''WEEKLY''
- AND IsActive = 1;';
-
- -- Execute dynamic SQL to declare cursor
- EXEC sp_executesql @Sql;
-
- OPEN job_cursor;
- FETCH NEXT FROM job_cursor INTO @JobName, @FrequencyPattern, @StartTime;
-
- WHILE @@FETCH_STATUS = 0
- BEGIN
- BEGIN TRY
- ------------------------------------------------------------------
- -- Reset per-job variables
- ------------------------------------------------------------------
- SET @FreqInterval = 0;
- SET @computedFreq = 0;
- SET @StartTimeInt = NULL;
- SET @ScheduleName = NULL;
-
- ------------------------------------------------------------------
- -- Correctly format the start time (HHMMSS without extra zeros)
- ------------------------------------------------------------------
- SET @StartTime = LTRIM(RTRIM(ISNULL(@StartTime, '00:00:00')));
-
- -- Parse time and convert to HHMMSS integer
- DECLARE @TimeParts TABLE (part NVARCHAR(10), idx INT);
- INSERT INTO @TimeParts (part, idx)
- SELECT value, ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) - 1
- FROM STRING_SPLIT(LEFT(@StartTime, 8), ':');
-
- DECLARE @Hours INT, @Minutes INT, @Seconds INT;
-
- SELECT @Hours = CAST(part AS INT) FROM @TimeParts WHERE idx = 0;
- SELECT @Minutes = CAST(part AS INT) FROM @TimeParts WHERE idx = 1;
- SELECT @Seconds = CAST(part AS INT) FROM @TimeParts WHERE idx = 2;
-
- -- Ensure valid time ranges
- SET @Hours = ISNULL(@Hours, 0);
- SET @Minutes = ISNULL(@Minutes, 0);
- SET @Seconds = ISNULL(@Seconds, 0);
-
- IF @Hours < 0 OR @Hours > 23 SET @Hours = 0;
- IF @Minutes < 0 OR @Minutes > 59 SET @Minutes = 0;
- IF @Seconds < 0 OR @Seconds > 59 SET @Seconds = 0;
-
- SET @StartTimeInt = (@Hours * 10000) + (@Minutes * 100) + @Seconds;
-
- SET @ScheduleName = CONCAT(@JobName, '_WeeklySchedule');
-
- ------------------------------------------------------------------
- -- Parse JSON days using a local temporary table
- ------------------------------------------------------------------
- CREATE TABLE #Days (DayName NVARCHAR(10));
-
- INSERT INTO #Days (DayName)
- SELECT TRIM(value)
- FROM OPENJSON(ISNULL(@FrequencyPattern, '{}'), '$.Days');
-
- ------------------------------------------------------------------
- -- Compute bitmask correctly (values should be 1-127)
- ------------------------------------------------------------------
- SELECT @computedFreq = ISNULL(SUM(
- CASE UPPER(DayName)
- WHEN 'SUN' THEN 1
- WHEN 'MON' THEN 2
- WHEN 'TUE' THEN 4
- WHEN 'WED' THEN 8
- WHEN 'THU' THEN 16
- WHEN 'FRI' THEN 32
- WHEN 'SAT' THEN 64
- ELSE 0
- END
- ), 0)
- FROM #Days;
-
- DROP TABLE #Days; -- Explicitly drop the temp table
-
- SET @FreqInterval = ISNULL(@computedFreq, 0);
-
- ------------------------------------------------------------------
- -- Validate freq_interval (must be 1..127)
- ------------------------------------------------------------------
- IF @FreqInterval < 1 OR @FreqInterval > 127
- BEGIN
- PRINT 'Warning: Weekly job ' + @JobName +
- ' has invalid freq_interval (' + ISNULL(CAST(@FreqInterval AS VARCHAR(10)), 'NULL') +
- '). Days found: ' + ISNULL(@FrequencyPattern, 'None') + '. Skipping.';
- FETCH NEXT FROM job_cursor INTO @JobName, @FrequencyPattern, @StartTime;
- CONTINUE;
- END
-
- ------------------------------------------------------------------
- -- Debug output to verify calculations
- ------------------------------------------------------------------
- PRINT 'Job: ' + @JobName +
- ', Days: ' + @FrequencyPattern +
- ', FreqInterval: ' + CAST(@FreqInterval AS VARCHAR(3)) +
- ', StartTime: ' + CAST(@StartTimeInt AS VARCHAR(6));
-
- ------------------------------------------------------------------
- -- Safely detach and delete any existing schedule with this name
- -- Use TRY/CATCH for schedule operations since non-existence is expected
- ------------------------------------------------------------------
- BEGIN TRY
- DECLARE @schedule_id INT;
- DECLARE @attach_count INT;
-
- -- Check if schedule exists and get its ID
- SELECT @schedule_id = s.schedule_id
- FROM msdb.dbo.sysschedules s
- JOIN msdb.dbo.sysjobschedules js ON s.schedule_id = js.schedule_id
- JOIN msdb.dbo.sysjobs j ON j.job_id = js.job_id
- WHERE j.name = @JobName AND s.name = @ScheduleName;
-
- IF @schedule_id IS NOT NULL
- BEGIN
- -- Detach from this job (if attached)
- EXEC msdb.dbo.sp_detach_schedule
- @job_name = @JobName,
- @schedule_name = @ScheduleName;
-
- -- Check if schedule still attached to other jobs
- SELECT @attach_count = COUNT(*)
- FROM msdb.dbo.sysjobschedules js
- WHERE js.schedule_id = @schedule_id;
-
- IF @attach_count = 0
- BEGIN
- EXEC msdb.dbo.sp_delete_schedule
- @schedule_name = @ScheduleName;
- PRINT 'Existing schedule deleted: ' + @ScheduleName;
- END
- ELSE
- BEGIN
- PRINT 'Notice: schedule ' + @ScheduleName + ' could not be deleted because it is still attached to other jobs.';
- END
- END
- END TRY
- BEGIN CATCH
- -- Schedule operations might fail if schedule doesn't exist, which is fine
- PRINT 'Notice: ' + ERROR_MESSAGE() + ' - proceeding with new schedule creation.';
- END CATCH
-
- ------------------------------------------------------------------
- -- Create the unified weekly schedule with subday config
- ------------------------------------------------------------------
- EXEC msdb.dbo.sp_add_schedule
- @schedule_name = @ScheduleName,
- @enabled = 1,
- @freq_type = 8, -- Weekly
- @freq_interval = @FreqInterval, -- Bitmask of weekdays
- @freq_recurrence_factor = 1, -- Every week
- @freq_subday_type = 1, -- Once per day
- @freq_subday_interval = 1,
- @active_start_time = @StartTimeInt,
- @active_start_date = @ActiveDate;
-
- ------------------------------------------------------------------
- -- Attach the schedule to the job
- ------------------------------------------------------------------
- EXEC msdb.dbo.sp_attach_schedule
- @job_name = @JobName,
- @schedule_name = @ScheduleName;
-
- PRINT 'Weekly schedule created for job: ' + @JobName +
- ' (Days=' + CAST(@FreqInterval AS VARCHAR(10)) +
- ', Time=' + RIGHT('000000' + CAST(@StartTimeInt AS VARCHAR(6)), 6) + ')';
-
- END TRY
- BEGIN CATCH
- PRINT 'Error scheduling job ' + ISNULL(@JobName, 'Unknown') + ': ' + ERROR_MESSAGE();
- END CATCH;
-
- FETCH NEXT FROM job_cursor INTO @JobName, @FrequencyPattern, @StartTime;
- END
-
- CLOSE job_cursor;
- DEALLOCATE job_cursor;
-
- PRINT 'All weekly job schedules processed for ' + @dbName;
-END;
-GO
\ No newline at end of file
diff --git a/SQLAgent/02_Test/3_Stored_Procedures/usp_ForceComplete.sql b/SQLAgent/02_Test/3_Stored_Procedures/usp_ForceComplete.sql
deleted file mode 100644
index 3b107b2..0000000
Binary files a/SQLAgent/02_Test/3_Stored_Procedures/usp_ForceComplete.sql and /dev/null differ
diff --git a/SQLAgent/02_Test/3_Stored_Procedures/usp_GenerateJobSchedule.sql b/SQLAgent/02_Test/3_Stored_Procedures/usp_GenerateJobSchedule.sql
deleted file mode 100644
index de09cab..0000000
--- a/SQLAgent/02_Test/3_Stored_Procedures/usp_GenerateJobSchedule.sql
+++ /dev/null
@@ -1,261 +0,0 @@
-USE [TestDUTASJobSchedule];
-GO
-
-CREATE OR ALTER PROCEDURE dbo.usp_GenerateJobSchedule
- @Year INT
-AS
-BEGIN
- SET NOCOUNT ON;
-
- -------------------------------------------------------------------------
- -- 1. Cleanup existing schedule data for this year
- -------------------------------------------------------------------------
- DELETE FROM dbo.JobSchedule WHERE YearOfSchedule = @Year;
-
- -------------------------------------------------------------------------
- -- 2. Variable declarations
- -------------------------------------------------------------------------
- DECLARE
- @JobName VARCHAR(100),
- @Frequency VARCHAR(20),
- @Pattern NVARCHAR(2000),
- @ScheduledTime TIME,
- @RuleName NVARCHAR(100),
- @Month INT,
- @BaseDate DATE,
- @ScheduledDate DATE,
- @AdjustedDate DATE,
- @FailSafeDate DATE = '9999-12-31';
-
- -------------------------------------------------------------------------
- -- 3. Temporary table to process jobs more efficiently
- -------------------------------------------------------------------------
- CREATE TABLE #JobProcessing (
- JobName VARCHAR(100),
- Frequency VARCHAR(20),
- Pattern NVARCHAR(2000),
- ScheduledTime TIME,
- RuleName NVARCHAR(100),
- MonthsJSON NVARCHAR(MAX),
- DayNum INT,
- HasExplicitSchedule BIT
- );
-
- -- Populate temporary table with parsed JSON data
- INSERT INTO #JobProcessing (JobName, Frequency, Pattern, ScheduledTime, RuleName, MonthsJSON, DayNum, HasExplicitSchedule)
- SELECT
- jc.JobName,
- jc.Frequency,
- jc.FrequencyPattern,
- jc.ScheduledStartTime,
- JSON_VALUE(jc.FrequencyPattern, '$.Rule'),
- JSON_QUERY(jc.FrequencyPattern, '$.Months'),
- JSON_VALUE(jc.FrequencyPattern, '$.Day'),
- CASE WHEN JSON_QUERY(jc.FrequencyPattern, '$.Schedule') IS NOT NULL THEN 1 ELSE 0 END
- FROM dbo.JobControl jc
- WHERE UPPER(jc.Frequency) IN ('MONTHLY','QUARTERLY')
- AND jc.IsActive = 1;
-
- -------------------------------------------------------------------------
- -- 4. Process MONTHLY jobs
- -------------------------------------------------------------------------
- INSERT INTO dbo.JobSchedule (JobName, Frequency, ScheduledRule, ScheduledDate, AdjustedRunDate, MonthOfSchedule, YearOfSchedule, CreatedOn, CreatedBy)
- SELECT
- jp.JobName,
- jp.Frequency,
- jp.Pattern,
- CASE
- WHEN jp.RuleName = 'FirstWorkday' THEN dbo.fn_GetNextWorkday(DATEFROMPARTS(@Year, m.MonthNum, 1))
- WHEN jp.RuleName = 'LastWorkday' THEN dbo.fn_GetPreviousWorkday(EOMONTH(DATEFROMPARTS(@Year, m.MonthNum, 1)))
- ELSE @FailSafeDate
- END AS ScheduledDate,
- CASE
- WHEN jp.RuleName = 'FirstWorkday' THEN dbo.fn_GetNextWorkday(DATEFROMPARTS(@Year, m.MonthNum, 1))
- WHEN jp.RuleName = 'LastWorkday' THEN dbo.fn_GetPreviousWorkday(EOMONTH(DATEFROMPARTS(@Year, m.MonthNum, 1)))
- ELSE @FailSafeDate
- END AS AdjustedRunDate,
- FORMAT(DATEFROMPARTS(@Year, m.MonthNum, 1), 'yyyy-MM'),
- @Year,
- GETDATE(),
- SYSTEM_USER
- FROM #JobProcessing jp
- CROSS JOIN (VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)) m(MonthNum)
- WHERE jp.Frequency = 'MONTHLY'
- AND jp.RuleName IN ('FirstWorkday', 'LastWorkday');
-
- -- Handle monthly jobs with unknown rules
- INSERT INTO dbo.JobSchedule (JobName, Frequency, ScheduledRule, ScheduledDate, AdjustedRunDate, MonthOfSchedule, YearOfSchedule, CreatedOn, CreatedBy)
- SELECT
- jp.JobName,
- jp.Frequency,
- jp.Pattern,
- @FailSafeDate,
- @FailSafeDate,
- FORMAT(DATEFROMPARTS(@Year, m.MonthNum, 1), 'yyyy-MM'),
- @Year,
- GETDATE(),
- SYSTEM_USER
- FROM #JobProcessing jp
- CROSS JOIN (VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)) m(MonthNum)
- WHERE jp.Frequency = 'MONTHLY'
- AND jp.RuleName NOT IN ('FirstWorkday', 'LastWorkday');
-
- -------------------------------------------------------------------------
- -- 5. Process QUARTERLY jobs - FirstWorkdayOfQuarter
- -------------------------------------------------------------------------
- INSERT INTO dbo.JobSchedule (JobName, Frequency, ScheduledRule, ScheduledDate, AdjustedRunDate, MonthOfSchedule, YearOfSchedule, CreatedOn, CreatedBy)
- SELECT
- jp.JobName,
- jp.Frequency,
- jp.Pattern,
- dbo.fn_GetNextWorkday(DATEFROMPARTS(@Year, q.StartMonth, 1)),
- dbo.fn_GetNextWorkday(DATEFROMPARTS(@Year, q.StartMonth, 1)),
- FORMAT(DATEFROMPARTS(@Year, q.StartMonth, 1), 'yyyy-MM'),
- @Year,
- GETDATE(),
- SYSTEM_USER
- FROM #JobProcessing jp
- CROSS JOIN (VALUES (1),(4),(7),(10)) q(StartMonth)
- WHERE jp.Frequency = 'QUARTERLY'
- AND jp.RuleName = 'FirstWorkdayOfQuarter';
-
- -------------------------------------------------------------------------
- -- 6. Process QUARTERLY jobs - Months array with Day number
- -------------------------------------------------------------------------
- ;WITH QuarterlyMonths AS (
- SELECT
- jp.JobName,
- jp.Frequency,
- jp.Pattern,
- CAST(m.[value] AS INT) AS MonthNum,
- jp.DayNum
- FROM #JobProcessing jp
- CROSS APPLY OPENJSON(jp.MonthsJSON) m
- WHERE jp.Frequency = 'QUARTERLY'
- AND jp.MonthsJSON IS NOT NULL
- AND jp.DayNum IS NOT NULL
- AND jp.RuleName IS NULL
- AND jp.HasExplicitSchedule = 0
- ),
- QuarterlyDates AS (
- SELECT
- qm.JobName,
- qm.Frequency,
- qm.Pattern,
- qm.MonthNum,
- qm.DayNum,
- CASE
- WHEN qm.DayNum <= DAY(EOMONTH(DATEFROMPARTS(@Year, qm.MonthNum, 1)))
- THEN DATEFROMPARTS(@Year, qm.MonthNum, qm.DayNum)
- ELSE EOMONTH(DATEFROMPARTS(@Year, qm.MonthNum, 1))
- END AS BaseDate
- FROM QuarterlyMonths qm
- )
- INSERT INTO dbo.JobSchedule (JobName, Frequency, ScheduledRule, ScheduledDate, AdjustedRunDate, MonthOfSchedule, YearOfSchedule, CreatedOn, CreatedBy)
- SELECT
- qd.JobName,
- qd.Frequency,
- qd.Pattern,
- qd.BaseDate,
- CASE
- WHEN DATENAME(WEEKDAY, qd.BaseDate) IN ('Saturday','Sunday')
- OR EXISTS (SELECT 1 FROM dbo.FederalHolidays WHERE HolidayDate = qd.BaseDate)
- THEN dbo.fn_GetPreviousWorkday(qd.BaseDate)
- ELSE qd.BaseDate
- END AS AdjustedRunDate,
- FORMAT(qd.BaseDate, 'yyyy-MM'),
- @Year,
- GETDATE(),
- SYSTEM_USER
- FROM QuarterlyDates qd;
-
- -------------------------------------------------------------------------
- -- 7. Process QUARTERLY jobs - Explicit Schedule array
- -------------------------------------------------------------------------
- ;WITH ExplicitSchedules AS (
- SELECT
- jp.JobName,
- jp.Frequency,
- jp.Pattern,
- s.[Month] AS MonthNum,
- s.[Day] AS DayNum
- FROM #JobProcessing jp
- CROSS APPLY OPENJSON(jp.Pattern, '$.Schedule')
- WITH (
- [Month] INT '$.Month',
- [Day] INT '$.Day'
- ) s
- WHERE jp.Frequency = 'QUARTERLY'
- AND jp.HasExplicitSchedule = 1
- ),
- ExplicitScheduleDates AS (
- SELECT
- es.JobName,
- es.Frequency,
- es.Pattern,
- es.MonthNum,
- es.DayNum,
- CASE
- WHEN es.DayNum <= DAY(EOMONTH(DATEFROMPARTS(@Year, es.MonthNum, 1)))
- THEN DATEFROMPARTS(@Year, es.MonthNum, es.DayNum)
- ELSE EOMONTH(DATEFROMPARTS(@Year, es.MonthNum, 1))
- END AS BaseDate
- FROM ExplicitSchedules es
- )
- INSERT INTO dbo.JobSchedule (JobName, Frequency, ScheduledRule, ScheduledDate, AdjustedRunDate, MonthOfSchedule, YearOfSchedule, CreatedOn, CreatedBy)
- SELECT
- esd.JobName,
- esd.Frequency,
- esd.Pattern,
- esd.BaseDate,
- CASE
- WHEN DATENAME(WEEKDAY, esd.BaseDate) IN ('Saturday','Sunday')
- OR EXISTS (SELECT 1 FROM dbo.FederalHolidays WHERE HolidayDate = esd.BaseDate)
- THEN dbo.fn_GetPreviousWorkday(esd.BaseDate)
- ELSE esd.BaseDate
- END AS AdjustedRunDate,
- FORMAT(esd.BaseDate, 'yyyy-MM'),
- @Year,
- GETDATE(),
- SYSTEM_USER
- FROM ExplicitScheduleDates esd;
-
- -------------------------------------------------------------------------
- -- 8. Handle any quarterly jobs that didn't match the patterns above
- -------------------------------------------------------------------------
- INSERT INTO dbo.JobSchedule (JobName, Frequency, ScheduledRule, ScheduledDate, AdjustedRunDate, MonthOfSchedule, YearOfSchedule, CreatedOn, CreatedBy)
- SELECT
- jp.JobName,
- jp.Frequency,
- jp.Pattern,
- @FailSafeDate,
- @FailSafeDate,
- FORMAT(DATEFROMPARTS(@Year, 1, 1), 'yyyy-MM'),
- @Year,
- GETDATE(),
- SYSTEM_USER
- FROM #JobProcessing jp
- WHERE jp.Frequency = 'QUARTERLY'
- AND NOT EXISTS (
- SELECT 1 FROM dbo.JobSchedule js
- WHERE js.JobName = jp.JobName AND js.YearOfSchedule = @Year
- );
-
- -------------------------------------------------------------------------
- -- 9. Cleanup and output
- -------------------------------------------------------------------------
- DROP TABLE #JobProcessing;
-
- -- Update any NULL dates to fail-safe date
- UPDATE dbo.JobSchedule
- SET ScheduledDate = @FailSafeDate,
- AdjustedRunDate = @FailSafeDate
- WHERE YearOfSchedule = @Year
- AND (ScheduledDate IS NULL OR AdjustedRunDate IS NULL);
-
- DECLARE @RecordCount INT = (SELECT COUNT(*) FROM dbo.JobSchedule WHERE YearOfSchedule = @Year);
-
- PRINT 'Job schedule generation completed for year ' + CAST(@Year AS VARCHAR(4)) +
- '. Total records created: ' + CAST(@RecordCount AS VARCHAR(10));
-END;
-GO
\ No newline at end of file
diff --git a/SQLAgent/02_Test/3_Stored_Procedures/usp_ScheduleJob.sql b/SQLAgent/02_Test/3_Stored_Procedures/usp_ScheduleJob.sql
deleted file mode 100644
index f6c2ffa..0000000
--- a/SQLAgent/02_Test/3_Stored_Procedures/usp_ScheduleJob.sql
+++ /dev/null
@@ -1,160 +0,0 @@
-USE [msdb]
-GO
-
-/****** Object: StoredProcedure [dbo].[usp_ScheduleJob] Script Date: 10/18/2025 9:52:04 AM ******/
-SET ANSI_NULLS ON
-GO
-
-SET QUOTED_IDENTIFIER ON
-GO
-
-
-CREATE OR ALTER PROCEDURE [dbo].[usp_ScheduleJob]
- @JobName NVARCHAR(100),
- @Env CHAR(4), -- 'DEVL' | 'TEST' | 'PROD'
- @RunDate DATE,
- @RunTime TIME
-AS
-BEGIN
- SET NOCOUNT ON;
-
- DECLARE
- @JobId UNIQUEIDENTIFIER,
- @ScheduleName NVARCHAR(200),
- @dbName NVARCHAR(128),
- @ActiveStartDate INT,
- @ActiveStartTime INT,
- @Sql NVARCHAR(MAX),
- @JobExists BIT = 0,
- @ScheduleId INT;
-
- -- Table variable must be declared separately and at the top level
- DECLARE @ExistingSchedules TABLE (
- schedule_id INT,
- schedule_name NVARCHAR(200)
- );
-
- -- Map environment to actual DB name
- SET @dbName = CASE @Env
- WHEN 'DEVL' THEN 'DevlDUTASJobSchedule'
- WHEN 'TEST' THEN 'TestDUTASJobSchedule'
- WHEN 'PROD' THEN 'ProdDUTASJobSchedule'
- ELSE 'DevlDUTASJobSchedule'
- END;
-
- -- Validate parameters
- IF @Env NOT IN ('DEVL','TEST','PROD')
- BEGIN
- RAISERROR('Env must be one of: DEVL, TEST, PROD.', 16, 1);
- RETURN;
- END
-
- IF @RunDate < CAST(GETDATE() AS DATE)
- BEGIN
- RAISERROR('RunDate cannot be in the past.', 16, 1);
- RETURN;
- END;
-
- -- Check if job exists in JobControl table
- SET @Sql = N'SELECT @JobExists = 1 FROM ' + QUOTENAME(@dbName) + '.dbo.JobControl WHERE JobName = @JobNameParam';
-
- EXEC sp_executesql @Sql,
- N'@JobNameParam NVARCHAR(100), @JobExists BIT OUTPUT',
- @JobNameParam = @JobName,
- @JobExists = @JobExists OUTPUT;
-
- IF @JobExists = 0
- BEGIN
- RAISERROR('Job %s not found in JobControl table.', 16, 1, @JobName);
- RETURN;
- END;
-
- -- Activate job in control table
- SET @Sql = N'UPDATE ' + QUOTENAME(@dbName) + '.dbo.JobControl SET IsActive = 1 WHERE JobName = @JobNameParam';
- EXEC sp_executesql @Sql,
- N'@JobNameParam NVARCHAR(100)',
- @JobNameParam = @JobName;
-
- PRINT 'Job activated in JobControl.';
-
- -- Convert date/time to SQL Agent format
- SET @ActiveStartDate = CONVERT(INT, CONVERT(CHAR(8), @RunDate, 112));
- SET @ActiveStartTime = DATEPART(HOUR, @RunTime) * 10000 +
- DATEPART(MINUTE, @RunTime) * 100 +
- DATEPART(SECOND, @RunTime);
-
- SET @ScheduleName = @JobName + '_MonthlySchedule';
-
- -- Get job id
- SELECT @JobId = job_id
- FROM msdb.dbo.sysjobs
- WHERE name = @JobName;
-
- IF @JobId IS NULL
- BEGIN
- RAISERROR('SQL Agent job "%s" not found.', 16, 1, @JobName);
- RETURN;
- END;
-
- BEGIN TRY
- BEGIN TRANSACTION;
-
- -- Detach and delete all existing schedules for this job
- INSERT INTO @ExistingSchedules (schedule_id, schedule_name)
- SELECT s.schedule_id, s.name
- FROM msdb.dbo.sysschedules AS s
- INNER JOIN msdb.dbo.sysjobschedules AS js ON s.schedule_id = js.schedule_id
- WHERE js.job_id = @JobId;
-
- DECLARE @OldScheduleId INT, @OldScheduleName NVARCHAR(200);
-
- DECLARE cur CURSOR LOCAL FAST_FORWARD FOR
- SELECT schedule_id, schedule_name FROM @ExistingSchedules;
-
- OPEN cur;
- FETCH NEXT FROM cur INTO @OldScheduleId, @OldScheduleName;
-
- WHILE @@FETCH_STATUS = 0
- BEGIN
- PRINT 'Detaching old schedule: ' + @OldScheduleName;
- EXEC msdb.dbo.sp_detach_schedule @job_id = @JobId, @schedule_name = @OldScheduleName;
-
- PRINT 'Deleting old schedule: ' + @OldScheduleName;
- EXEC msdb.dbo.sp_delete_schedule @schedule_name = @OldScheduleName;
-
- FETCH NEXT FROM cur INTO @OldScheduleId, @OldScheduleName;
- END
-
- CLOSE cur;
- DEALLOCATE cur;
-
- -- Create new one-time schedule
- EXEC msdb.dbo.sp_add_schedule
- @schedule_name = @ScheduleName,
- @enabled = 1,
- @freq_type = 1, -- One-time
- @active_start_date = @ActiveStartDate,
- @active_start_time = @ActiveStartTime;
-
- -- Attach schedule to job
- EXEC msdb.dbo.sp_attach_schedule
- @job_id = @JobId,
- @schedule_name = @ScheduleName;
-
- COMMIT TRANSACTION;
-
- PRINT 'New schedule created for job "' + @JobName +
- '" on ' + CONVERT(VARCHAR(10), @RunDate, 120) +
- ' at ' + CONVERT(VARCHAR(8), @RunTime, 108);
- END TRY
- BEGIN CATCH
- IF @@TRANCOUNT > 0
- ROLLBACK TRANSACTION;
-
- DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE();
- RAISERROR('Error creating schedule: %s', 16, 1, @ErrorMessage);
- END CATCH;
-END;
-GO
-
-
diff --git a/SQLAgent/02_Test/3_Stored_Procedures/usp_ScheduleJobsForMonth.sql b/SQLAgent/02_Test/3_Stored_Procedures/usp_ScheduleJobsForMonth.sql
deleted file mode 100644
index adcfa37..0000000
--- a/SQLAgent/02_Test/3_Stored_Procedures/usp_ScheduleJobsForMonth.sql
+++ /dev/null
@@ -1,39 +0,0 @@
-USE TestDUTASJobSchedule;
-GO
-
-CREATE OR ALTER PROCEDURE dbo.usp_ScheduleJobsForMonth
-AS
-BEGIN
- SET NOCOUNT ON;
-
- DECLARE @MonthKey CHAR(7) = FORMAT(GETDATE(), 'yyyy-MM');
- DECLARE @Year INT = YEAR(GETDATE());
- DECLARE @JobName VARCHAR(100);
- DECLARE @RunDate DATE;
- DECLARE @RunTime TIME;
- DECLARE @Env VARCHAR(10) = 'TEST'; -- configurable per environment
-
- DECLARE job_cursor CURSOR FOR
- SELECT js.JobName, js.AdjustedRunDate, jc.ScheduledStartTime
- FROM dbo.JobSchedule js
- INNER JOIN dbo.JobControl jc ON js.JobName = jc.JobName
- WHERE js.MonthOfSchedule = @MonthKey
- AND jc.IsActive = 1;
-
- OPEN job_cursor;
- FETCH NEXT FROM job_cursor INTO @JobName, @RunDate, @RunTime;
-
- WHILE @@FETCH_STATUS = 0
- BEGIN
- EXEC msdb.dbo.usp_ScheduleJob
- @JobName = @JobName,
- @Env = @Env,
- @RunDate = @RunDate,
- @RunTime = @RunTime;
-
- FETCH NEXT FROM job_cursor INTO @JobName, @RunDate, @RunTime;
- END
-
- CLOSE job_cursor;
- DEALLOCATE job_cursor;
-END
diff --git a/SQLAgent/02_Test/3_Stored_Procedures/usp_TriggerMissedJobs.sql b/SQLAgent/02_Test/3_Stored_Procedures/usp_TriggerMissedJobs.sql
deleted file mode 100644
index 53496ac..0000000
Binary files a/SQLAgent/02_Test/3_Stored_Procedures/usp_TriggerMissedJobs.sql and /dev/null differ
diff --git a/SQLAgent/02_Test/3_Stored_Procedures/usp_UpdateJobStatus_Generic.sql b/SQLAgent/02_Test/3_Stored_Procedures/usp_UpdateJobStatus_Generic.sql
deleted file mode 100644
index 6057d6e..0000000
Binary files a/SQLAgent/02_Test/3_Stored_Procedures/usp_UpdateJobStatus_Generic.sql and /dev/null differ
diff --git a/SQLAgent/02_Test/4_Job_Maintenance/ActivateOnDemandJob.sql b/SQLAgent/02_Test/4_Job_Maintenance/ActivateOnDemandJob.sql
deleted file mode 100644
index 8ba8703..0000000
--- a/SQLAgent/02_Test/4_Job_Maintenance/ActivateOnDemandJob.sql
+++ /dev/null
@@ -1,10 +0,0 @@
-USE msdb;
-GO
-
--- Schedule TEST OnDemand Job on 03 Nov at 18:15 PM
-------------------------------------------------
-EXEC dbo.usp_ScheduleJob
- @JobName='TEST_MONTHLY_DTSRQ414',
- @Env='TEST',
- @RunDate='2025-11-03',
- @RunTime='18:15:00';
diff --git a/SQLAgent/02_Test/4_Job_Maintenance/AddAllJobsToSQLAgent.sql b/SQLAgent/02_Test/4_Job_Maintenance/AddAllJobsToSQLAgent.sql
deleted file mode 100644
index 1365898..0000000
--- a/SQLAgent/02_Test/4_Job_Maintenance/AddAllJobsToSQLAgent.sql
+++ /dev/null
@@ -1,141 +0,0 @@
-USE [msdb]
-GO
-
--- Execute the stored procedure for each job
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSBX215', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSBX305', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSGSID0', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_GSIRQ300', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSRQ202', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSGSID1', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSBX202', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSFT202', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSBX432', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSGACHD', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSBX303', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSGWAGE', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSGCHKS', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSESDAY', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSGPAYT', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSDX145', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSBX629', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSBX630', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSFRAUD', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSRACHD', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSBXACH', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSBXREG', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSBX430', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSBX626', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSBX530', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSBXREL', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSBX450', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSBX451', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSPACHD', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSPX148', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSRQ325', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSBX427', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSPDAY1', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSW4WGE', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSGSID2', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSGSID9', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSMIN01', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSMIN02', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSRQ459', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSBXPFL', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DESBD427', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSBX403', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSBE405', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSBX405', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSRQ335', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_DAILY_DTSBX601', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_WEEKLY_DTSGSID0', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_WEEKLY_DTSGSID1', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_WEEKLY_DTSBX202', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_WEEKLY_DTSFT202', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_WEEKLY_DTSBX470', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_WEEKLY_DTSBXREJ', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_WEEKLY_DTSPDAY7', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_WEEKLY_DTSBX122', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_WEEKLY_DTSRQ511', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_WEEKLY_DTSRQ444', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_WEEKLY_DTSRQ126', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_MONTHLY_DTSRQ414', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_MONTHLY_DTSPMON1', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_MONTHLY_DTSCHGVB', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_MONTHLY_DTSCHGVR', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_MONTHLY_DTSVBKUP', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_MONTHLY_DTSVRSTR', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_MONTHLY_DTSRQ442', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_MONTHLY_DTSBX460', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_MONTHLY_DTSRQ513', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_MONTHLY_DTSCHGDC', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_QUARTERLY_DTSRQ119', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_QUARTERLY_DTSRQ902', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_QUARTERLY_DTSBX500', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_QUARTERLY_DTSRQ417', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_QUARTERLY_DTSRQ320', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_QUARTERLY_DTSRQ713', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_QUARTERLY_DTSBX468', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_QUARTERLY_DTSCHGQ1', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_QUARTERLY_DTSCHGQ2', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_QUARTERLY_DTSRQ327', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_QUARTERLY_DTSRQ328', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_QUARTERLY_DTSRQ412', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_QUARTERLY_DTSRQ793', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_QUARTERLY_DTSWGE06', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_QUARTERLY_DTSCHGRT', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_QUARTERLY_DTSCHRGS', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_QUARTERLY_DTSRQ540', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_QUARTERLY_DTSRQ591', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_QUARTERLY_DTSRTCHG', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_QUARTERLY_DTSWGE01', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_QUARTERLY_DESBD426', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSACH01', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSBX415', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSBX452', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSBX453', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRQ120', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRQ123', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRQ125', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRQ305', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRQ306', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRQ308', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRQ311', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRQ410', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRQ411', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRQ423', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRQ426', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRQ429', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRQ439', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRQ602', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRQ606', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRQ607', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRQ609', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRQ611', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRQ612', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRQ717', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRQ718', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRQ720', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRQ721', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRT715', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRT716', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRT717', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRT718', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRT719', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRT720', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRT722', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_ONDEMAND_DTSRT723', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_YEARLY_DTSRQ722', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_YEARLY_DTSRQ451', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_YEARLY_DTSRQ127', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_YEARLY_DTSRQ321', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_YEARLY_DTSRQ455', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_YEARLY_DTSRQ500', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_YEARLY_DTSRQ517', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_YEARLY_DTSRQ518', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_YEARLY_DTSRQ616', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_YEARLY_DTSRQ701', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_YEARLY_DTSRQ702', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_YEARLY_DTSRQ704', @Env = 'TEST';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'TEST_YEARLY_DTSRQ910', @Env = 'TEST';
-GO
\ No newline at end of file
diff --git a/SQLAgent/02_Test/4_Job_Maintenance/AddDailyJobSchedule.sql b/SQLAgent/02_Test/4_Job_Maintenance/AddDailyJobSchedule.sql
deleted file mode 100644
index 88d2d22..0000000
--- a/SQLAgent/02_Test/4_Job_Maintenance/AddDailyJobSchedule.sql
+++ /dev/null
@@ -1 +0,0 @@
-EXEC msdb.dbo.usp_CreateDailyJobSchedule @Env = 'TEST';
\ No newline at end of file
diff --git a/SQLAgent/02_Test/4_Job_Maintenance/AddNewJobToSQLAgent.sql b/SQLAgent/02_Test/4_Job_Maintenance/AddNewJobToSQLAgent.sql
deleted file mode 100644
index 743765a..0000000
--- a/SQLAgent/02_Test/4_Job_Maintenance/AddNewJobToSQLAgent.sql
+++ /dev/null
@@ -1,5 +0,0 @@
-USE [msdb]
-GO
-
--- Create a job in SQL Agent (With Standard 3 steps approach)
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'DEVL_DAILY_DTSBX215', @Env = 'DEVL';
\ No newline at end of file
diff --git a/SQLAgent/02_Test/4_Job_Maintenance/AddWeeklyJobSchedule.sql b/SQLAgent/02_Test/4_Job_Maintenance/AddWeeklyJobSchedule.sql
deleted file mode 100644
index 39978c4..0000000
--- a/SQLAgent/02_Test/4_Job_Maintenance/AddWeeklyJobSchedule.sql
+++ /dev/null
@@ -1 +0,0 @@
-EXEC msdb.dbo.usp_CreateWeeklySchedules @Env = 'TEST';
\ No newline at end of file
diff --git a/SQLAgent/02_Test/4_Job_Maintenance/DailyJobScheduleLookup.sql b/SQLAgent/02_Test/4_Job_Maintenance/DailyJobScheduleLookup.sql
deleted file mode 100644
index b893457..0000000
--- a/SQLAgent/02_Test/4_Job_Maintenance/DailyJobScheduleLookup.sql
+++ /dev/null
@@ -1,86 +0,0 @@
-/********************************************************************************************
- 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:
- • Uses MSDB’s internal schedule definitions (sysschedules, sysjobschedules).
- • Supports One-time, Daily, Weekly, and Monthly schedule types.
- • 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 = 'DEVL'; -- Change for TEST 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
diff --git a/SQLAgent/02_Test/4_Job_Maintenance/DeactivateJob.sql b/SQLAgent/02_Test/4_Job_Maintenance/DeactivateJob.sql
deleted file mode 100644
index e72bae5..0000000
--- a/SQLAgent/02_Test/4_Job_Maintenance/DeactivateJob.sql
+++ /dev/null
@@ -1,12 +0,0 @@
-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';
diff --git a/SQLAgent/02_Test/4_Job_Maintenance/DeleteSchedule.sql b/SQLAgent/02_Test/4_Job_Maintenance/DeleteSchedule.sql
deleted file mode 100644
index 04be04d..0000000
--- a/SQLAgent/02_Test/4_Job_Maintenance/DeleteSchedule.sql
+++ /dev/null
@@ -1,27 +0,0 @@
-USE msdb;
-GO
-
-DECLARE @EnvPrefix NVARCHAR(50) = N'TEST'; -- <<< Change this to your environment prefix
-DECLARE @schedule_id INT;
-DECLARE @schedule_name NVARCHAR(128);
-
-DECLARE Sched_Cursor CURSOR FOR
-SELECT schedule_id, name
-FROM msdb.dbo.sysschedules
-WHERE name LIKE @EnvPrefix + '%'; -- Only schedules starting with the given prefix
-
-OPEN Sched_Cursor;
-FETCH NEXT FROM Sched_Cursor INTO @schedule_id, @schedule_name;
-
-WHILE @@FETCH_STATUS = 0
-BEGIN
- PRINT 'Deleting schedule: ' + @schedule_name;
- EXEC msdb.dbo.sp_delete_schedule @schedule_id = @schedule_id;
- FETCH NEXT FROM Sched_Cursor INTO @schedule_id, @schedule_name;
-END
-
-CLOSE Sched_Cursor;
-DEALLOCATE Sched_Cursor;
-
-PRINT 'All SQL Agent schedules starting with prefix ' + @EnvPrefix + ' deleted successfully.';
-GO
diff --git a/SQLAgent/02_Test/4_Job_Maintenance/DetachDeleteScheduleByName.sql b/SQLAgent/02_Test/4_Job_Maintenance/DetachDeleteScheduleByName.sql
deleted file mode 100644
index d646072..0000000
--- a/SQLAgent/02_Test/4_Job_Maintenance/DetachDeleteScheduleByName.sql
+++ /dev/null
@@ -1,13 +0,0 @@
--- 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;
diff --git a/SQLAgent/02_Test/4_Job_Maintenance/ForceCompleteJob.sql b/SQLAgent/02_Test/4_Job_Maintenance/ForceCompleteJob.sql
deleted file mode 100644
index b34da74..0000000
--- a/SQLAgent/02_Test/4_Job_Maintenance/ForceCompleteJob.sql
+++ /dev/null
@@ -1,16 +0,0 @@
-USE TestDUTASJobSchedule;
-GO
-
--- 1. Check today's job status
-SELECT JobName, Status, ErrorMessage
-FROM dbo.JobExecutionHistory
-WHERE RunDate = CAST(GETDATE() AS DATE)
-AND JobName = 'TEST_WEEKLY_DTSGSID1';
-
--- 2. Mark DTSBX305 as manually overridden
-EXEC dbo.usp_ForceComplete 'TEST_WEEKLY_DTSGSID1', 'Neeraj.Kumar';
-
--- 3. Verify the override
-SELECT JobName, Status, OverrideBy, OverrideDate
-FROM dbo.JobExecutionHistory
-WHERE JobName = 'TEST_WEEKLY_DTSGSID1' AND RunDate = CAST(GETDATE() AS DATE);
\ No newline at end of file
diff --git a/SQLAgent/02_Test/4_Job_Maintenance/GenerateJobScheduleTable.sql b/SQLAgent/02_Test/4_Job_Maintenance/GenerateJobScheduleTable.sql
deleted file mode 100644
index 7c58121..0000000
--- a/SQLAgent/02_Test/4_Job_Maintenance/GenerateJobScheduleTable.sql
+++ /dev/null
@@ -1,10 +0,0 @@
-USE TestDUTASJobSchedule;
-GO
-
--- Set Job Schedule for the Year 2025
-EXEC dbo.usp_GenerateJobSchedule @Year = 2025;
-GO
-
--- Set Job Schedule for the Year 2026
-EXEC dbo.usp_GenerateJobSchedule @Year = 2026;
-GO
\ No newline at end of file
diff --git a/SQLAgent/02_Test/4_Job_Maintenance/JobInfo.sql b/SQLAgent/02_Test/4_Job_Maintenance/JobInfo.sql
deleted file mode 100644
index 4cd23e4..0000000
--- a/SQLAgent/02_Test/4_Job_Maintenance/JobInfo.sql
+++ /dev/null
@@ -1,47 +0,0 @@
-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
diff --git a/SQLAgent/02_Test/4_Job_Maintenance/SQLAgentInfo.sql b/SQLAgent/02_Test/4_Job_Maintenance/SQLAgentInfo.sql
deleted file mode 100644
index d63458e..0000000
--- a/SQLAgent/02_Test/4_Job_Maintenance/SQLAgentInfo.sql
+++ /dev/null
@@ -1,42 +0,0 @@
-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
\ No newline at end of file
diff --git a/SQLAgent/02_Test/4_Job_Maintenance/ScheduleJobsMonthly.sql b/SQLAgent/02_Test/4_Job_Maintenance/ScheduleJobsMonthly.sql
deleted file mode 100644
index cd590b3..0000000
--- a/SQLAgent/02_Test/4_Job_Maintenance/ScheduleJobsMonthly.sql
+++ /dev/null
@@ -1,3 +0,0 @@
-USE TestDUTASJobSchedule;
-GO
-EXEC dbo.usp_ScheduleJobsForMonth;
diff --git a/SQLAgent/02_Test/4_Job_Maintenance/TodaysExecution.sql b/SQLAgent/02_Test/4_Job_Maintenance/TodaysExecution.sql
deleted file mode 100644
index 7509ac0..0000000
--- a/SQLAgent/02_Test/4_Job_Maintenance/TodaysExecution.sql
+++ /dev/null
@@ -1,21 +0,0 @@
-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;
diff --git a/SQLAgent/02_Test/4_Job_Maintenance/TriggerMissedJob.sql b/SQLAgent/02_Test/4_Job_Maintenance/TriggerMissedJob.sql
deleted file mode 100644
index 5899713..0000000
--- a/SQLAgent/02_Test/4_Job_Maintenance/TriggerMissedJob.sql
+++ /dev/null
@@ -1,9 +0,0 @@
-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;
-
diff --git a/SQLAgent/02_Test/4_PowerShell_Scripts/Backup-SQLAgentJobs.ps1 b/SQLAgent/02_Test/4_PowerShell_Scripts/Backup-SQLAgentJobs.ps1
deleted file mode 100644
index f858d64..0000000
--- a/SQLAgent/02_Test/4_PowerShell_Scripts/Backup-SQLAgentJobs.ps1
+++ /dev/null
@@ -1,16 +0,0 @@
-# Example PowerShell snippet
-$Server = "DOES-DUTAS-SQL1"
-$BackupPath = "\\DOES-RAINVM-DEV\E$\Neeraj\SqlAgent\Backup\"
-$Timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
-$ZipFile = "$BackupPath\SQLAgentJobs_$Timestamp.zip"
-
-# Make backup folder if not exist
-if (-not (Test-Path $BackupPath)) { New-Item -ItemType Directory -Path $BackupPath }
-
-# Export all jobs as SQL files
-sqlcmd -S $Server -Q "EXEC msdb.dbo.sp_help_job" -o "$BackupPath\SQLAgentJobs_$Timestamp.txt"
-
-# Compress to zip
-Compress-Archive -Path "$BackupPath\*" -DestinationPath $ZipFile -Force
-
-Write-Host "✅ Backup complete: $ZipFile"
diff --git a/SQLAgent/02_Test/4_PowerShell_Scripts/Execute-RemoteJob.ps1 b/SQLAgent/02_Test/4_PowerShell_Scripts/Execute-RemoteJob.ps1
deleted file mode 100644
index eace0e0..0000000
--- a/SQLAgent/02_Test/4_PowerShell_Scripts/Execute-RemoteJob.ps1
+++ /dev/null
@@ -1,102 +0,0 @@
-param(
- [Parameter(Mandatory = $true)]
- [string]$JobName,
-
- [Parameter(Mandatory = $true)]
- [ValidateSet('DEVL', 'TEST', 'PROD')]
- [string]$Env
-)
-
-try {
- Write-Host "Starting job $JobName in environment $Env at $(Get-Date)"
-
- # ------------------------------------------------------------
- # Extract JCL from JobName (ENV_FREQUENCY_JOB pattern)
- # ------------------------------------------------------------
- $JCL = $JobName -replace '^[A-Z]+_[A-Z]+_', ''
- Write-Host "Extracted JCL: $JCL from JobName: $JobName" -ForegroundColor Yellow
-
- # ------------------------------------------------------------
- # Environment-specific configuration
- # ------------------------------------------------------------
- switch ($Env.ToUpper()) {
- 'DEVL' {
- $ComputerName = '10.57.110.120'
- $DatabaseName = 'DevlDUTASJobSchedule'
- }
- 'TEST' {
- $ComputerName = '10.57.110.141'
- $DatabaseName = 'TestDUTASJobSchedule'
- }
- 'PROD' {
- $ComputerName = '10.57.111.120'
- $DatabaseName = 'ProdDUTASJobSchedule'
- }
- default {
- throw "Invalid environment specified: $Env"
- }
- }
-
- # ------------------------------------------------------------
- # Remote credentials
- # (recommend moving credentials to secure vault for production)
- # ------------------------------------------------------------
- $username = "DUTASSQLAdminP@does.dcgov.priv"
- $password = "4ho@3Pr&Xof8" | ConvertTo-SecureString -AsPlainText -Force
- $credential = New-Object System.Management.Automation.PSCredential($username, $password)
-
- # ------------------------------------------------------------
- # Execute job remotely using the extracted JCL
- # ------------------------------------------------------------
- Write-Host "Connecting to remote server $ComputerName ..."
- $exitCode = Invoke-Command -ComputerName $ComputerName `
- -Credential $credential `
- -Authentication CredSSP `
- -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck) `
- -ArgumentList $JobName, $JCL, $Env `
- -ScriptBlock {
- param($JobName, $JCL, $Env)
-
- Write-Host "Remote execution - JobName: $JobName, JCL: $JCL, Env: $Env"
-
- $process = Start-Process -FilePath "powershell.exe" `
- -ArgumentList "-ExecutionPolicy Bypass -File `"E:\PSScript\RCSubmit-Job.ps1`" -JobName `"$JCL`" -Env `"$Env`"" `
- -NoNewWindow -Wait -PassThru
- return $process.ExitCode
- }
-
- if ($exitCode -eq 0) {
- Write-Host "Job $JobName (JCL: $JCL) completed successfully at $(Get-Date)" -ForegroundColor Green
- } else {
- Write-Error "Job $JobName (JCL: $JCL) failed with exit code: $exitCode"
- }
-}
-catch {
- Write-Error "Job $JobName failed with error: $($_.Exception.Message)"
- $exitCode = 1
-}
-finally {
- # ------------------------------------------------------------
- # Log exit code to the appropriate database
- # ------------------------------------------------------------
- try {
- $connectionString = "Server=localhost;Database=$DatabaseName;Trusted_Connection=true;"
- $connection = New-Object System.Data.SqlClient.SqlConnection($connectionString)
- $connection.Open()
-
- $command = $connection.CreateCommand()
- $command.CommandText = @"
- INSERT INTO dbo.JobExitCodes (JobName, RunDate, ExitCode, RecordedTime)
- VALUES ('$JobName', CAST(GETDATE() AS DATE), $exitCode, GETDATE());
-"@
- $command.ExecuteNonQuery()
- $connection.Close()
- Write-Host "Exit code $exitCode logged to database $DatabaseName for job $JobName"
- }
- catch {
- $errorMsg = $_.Exception.Message
- Write-Host "Failed to log exit code to database $DatabaseName`: $errorMsg"
- }
-}
-
-exit $exitCode
\ No newline at end of file
diff --git a/SQLAgent/02_Test/4_PowerShell_Scripts/RCSubmit-Job.ps1 b/SQLAgent/02_Test/4_PowerShell_Scripts/RCSubmit-Job.ps1
deleted file mode 100644
index 3fb0c57..0000000
--- a/SQLAgent/02_Test/4_PowerShell_Scripts/RCSubmit-Job.ps1
+++ /dev/null
@@ -1,108 +0,0 @@
-param(
- [string]$JobName,
- [string]$Env
-)
-
-# --- Parameter Validation ---
-if (-not $JobName) {
- Write-Host "JobName parameter is required" -ForegroundColor Red
- exit 1
-}
-if (-not $Env) {
- Write-Host "Environment (Env) parameter is required" -ForegroundColor Red
- exit 1
-}
-
-# --- Execute Job ---
-Write-Host "Submitting job: $JobName in environment: $Env" -ForegroundColor Cyan
-$output = & "$env:rcbin\submit.exe" -DSN="DOESTAX.$Env.JOBS.BATCH.LIB($JobName)"
-$exitCode = [int]$LASTEXITCODE
-$isSuccess = 0
-
-# --- Parse SYSLOG Path ---
-$syslogPath = $null
-$syslogFolder = "Not found"
-$content = @()
-$summary = @()
-
-try {
- $syslogPath = $output | Select-String -Pattern "SYSLOG=\[(.*)\]" | ForEach-Object { $_.Matches.Groups[1].Value }
-
- if ($syslogPath -and (Test-Path $syslogPath)) {
- $syslogFolder = Split-Path $syslogPath -Parent
- $content = Get-Content $syslogPath -ErrorAction Stop
- $summary = $content | Select-String -Pattern "%Job Overall Stats:" -Context 0,7 | ForEach-Object {
- $_.Context.PostContext | Select-Object -Skip 1 -First 5
- }
- } else {
- Write-Host "SYSLOG path not found or inaccessible: $syslogPath" -ForegroundColor Yellow
- $summary = @("SYSLOG file not found in output", "Raw output:", $output -join "`n")
- }
-}
-catch {
- Write-Host "Error processing SYSLOG: $($_.Exception.Message)" -ForegroundColor Yellow
- $summary = @("Error reading SYSLOG: $($_.Exception.Message)", "Raw output:", $output -join "`n")
-}
-
-# --- Evaluate Return Codes ---
-$successConditions = @(
- { $JobName -eq "GSIRQ300" -and $exitCode -eq 50 },
- { $JobName -eq "DTSGWAGE" -and $exitCode -eq 8 },
- { $JobName -eq "DTSGCHKS" -and $exitCode -eq 8 },
- { $JobName -eq "DTSGPAYT" -and $exitCode -eq 8 },
- { $JobName -eq "DTSBXACH" -and $exitCode -eq 2 },
- { $JobName -eq "DTSBXREL" -and $exitCode -eq 2 },
- { $JobName -eq "DTSMIN02" -and $exitCode -eq 4 },
- { $JobName -eq "DTSBE405" -and $exitCode -eq 910 },
- { $JobName -eq "DTSBXREJ" -and $exitCode -eq 4 },
- { $JobName -eq "DTSRQ444" -and $exitCode -eq 4 },
- { $exitCode -eq 0 }
-)
-
-if ($successConditions | Where-Object { & $_ }) {
- Write-Host "Job $JobName succeeded with code $exitCode" -ForegroundColor Green
- $isSuccess = 0
-} else {
- Write-Host "Job $JobName failed with code $exitCode" -ForegroundColor Red
- $isSuccess = 1
- # Only use error if we don't have a proper summary
- if ($summary.Count -eq 0) {
- $summary = @($Error[0])
- }
-}
-
-# --- Email Notification ---
-$smtpServer = "smtp4.dc.gov"
-$fromEmail = "Dutas@dc.gov"
-$toEmail = "neerajk@innovaconsulting.com"
-$ccEmail = @("neerajk@innovaconsulting.com")
-
-$emailBody = @"
-
-DUTAS Batch Job: $JobName Execution Report
-==========================================
-$($summary -join "`n")
-==========================================
-
-Return Code: $exitCode
-Status: $(if ($isSuccess -eq 0) { "SUCCESS" } else { "FAILED" })
-JOBLOG Path: $syslogFolder
-
-"@
-
-try {
- Send-MailMessage -SmtpServer $smtpServer -Port 25 `
- -From $fromEmail -To $toEmail -Cc $ccEmail `
- -Subject "DUTAS-[$Env] Job Status: $JobName - $(if ($isSuccess -eq 0) { 'SUCCESS' } else { 'FAILED' })" `
- -Body $emailBody -BodyAsHtml
- Write-Host "Email sent successfully to $toEmail" -ForegroundColor Cyan
-}
-catch {
- Write-Host "Failed to send email: $($_.Exception.Message)" -ForegroundColor Yellow
-}
-
-Write-Host "`n---------------------------------------------"
-Write-Host "Job: $JobName | ExitCode: $exitCode | Status: $(if ($isSuccess -eq 0) { 'SUCCESS' } else { 'FAILED' })"
-Write-Host "---------------------------------------------`n"
-
-exit $isSuccess
\ No newline at end of file
diff --git a/SQLAgent/02_Test/5_Deployment/Deploy_DEVL_to_TEST.sql b/SQLAgent/02_Test/5_Deployment/Deploy_DEVL_to_TEST.sql
deleted file mode 100644
index 2cd3fa5..0000000
--- a/SQLAgent/02_Test/5_Deployment/Deploy_DEVL_to_TEST.sql
+++ /dev/null
@@ -1,15 +0,0 @@
-DECLARE @SrcDB NVARCHAR(128) = 'DevlDUTASJobSchedule';
-DECLARE @NewDB NVARCHAR(128) = 'TestDUTASJobSchedule';
-DECLARE @Backup NVARCHAR(260) = '\\DOES-RAINVM-DEV\E$\Neeraj\SqlAgent\Backup\' + @SrcDB + '.bak';
-
--- Backup Source
-BACKUP DATABASE @SrcDB TO DISK = @Backup WITH INIT, COMPRESSION;
-
--- Restore as Target
-DECLARE @SQL NVARCHAR(MAX) = '
-RESTORE DATABASE [' + @NewDB + ']
-FROM DISK = N''' + @Backup + '''
-WITH MOVE N''' + @SrcDB + ''' TO N''\\DOES-RAINVM-DEV\E$\SQLData\' + @NewDB + '.mdf'',
- MOVE N''' + @SrcDB + '_log'' TO N''\\DOES-RAINVM-DEV\E$\SQLLogs\' + @NewDB + '_log.ldf'',
- REPLACE;';
-EXEC(@SQL);
diff --git a/SQLAgent/02_Test/5_Deployment/Deploy_TEST_to_PROD.sql b/SQLAgent/02_Test/5_Deployment/Deploy_TEST_to_PROD.sql
deleted file mode 100644
index 3cd8de6..0000000
--- a/SQLAgent/02_Test/5_Deployment/Deploy_TEST_to_PROD.sql
+++ /dev/null
@@ -1,15 +0,0 @@
-DECLARE @SrcDB NVARCHAR(128) = 'TestDUTASJobSchedule';
-DECLARE @NewDB NVARCHAR(128) = 'ProdDUTASJobSchedule';
-DECLARE @Backup NVARCHAR(260) = '\\DOES-RAINVM-DEV\E$\Neeraj\SqlAgent\Backup\' + @SrcDB + '.bak';
-
--- Backup Source
-BACKUP DATABASE @SrcDB TO DISK = @Backup WITH INIT, COMPRESSION;
-
--- Restore as Target
-DECLARE @SQL NVARCHAR(MAX) = '
-RESTORE DATABASE [' + @NewDB + ']
-FROM DISK = N''' + @Backup + '''
-WITH MOVE N''' + @SrcDB + ''' TO N''\\DOES-RAINVM-DEV\E$\SQLData\' + @NewDB + '.mdf'',
- MOVE N''' + @SrcDB + '_log'' TO N''\\DOES-RAINVM-DEV\E$\SQLLogs\' + @NewDB + '_log.ldf'',
- REPLACE;';
-EXEC(@SQL);
diff --git a/SQLAgent/02_Test/5_PowerShell_Scripts/Execute-RemoteJob.ps1 b/SQLAgent/02_Test/5_PowerShell_Scripts/Execute-RemoteJob.ps1
deleted file mode 100644
index ddf3ea8..0000000
--- a/SQLAgent/02_Test/5_PowerShell_Scripts/Execute-RemoteJob.ps1
+++ /dev/null
@@ -1,102 +0,0 @@
-param(
- [Parameter(Mandatory = $true)]
- [string]$JobName,
-
- [Parameter(Mandatory = $true)]
- [ValidateSet('DEVL', 'TEST', 'PROD')]
- [string]$Env
-)
-
-try {
- Write-Host "Starting job $JobName in environment $Env at $(Get-Date)"
-
- # ------------------------------------------------------------
- # Extract JCL from JobName (ENV_FREQUENCY_JOB pattern)
- # ------------------------------------------------------------
- $JCL = $JobName -replace '^[A-Z]+_[A-Z]+_', ''
- Write-Host "Extracted JCL: $JCL from JobName: $JobName" -ForegroundColor Yellow
-
- # ------------------------------------------------------------
- # Environment-specific configuration
- # ------------------------------------------------------------
- switch ($Env.ToUpper()) {
- 'DEVL' {
- $ComputerName = '10.57.110.120'
- $DatabaseName = 'DevlDUTASJobSchedule'
- }
- 'TEST' {
- $ComputerName = '10.57.110.141'
- $DatabaseName = 'TestDUTASJobSchedule'
- }
- 'PROD' {
- $ComputerName = '10.57.111.125'
- $DatabaseName = 'ProdDUTASJobSchedule'
- }
- default {
- throw "Invalid environment specified: $Env"
- }
- }
-
- # ------------------------------------------------------------
- # Remote credentials
- # (recommend moving credentials to secure vault for production)
- # ------------------------------------------------------------
- $username = "DUTASSQLAdminP@does.dcgov.priv"
- $password = "4ho@3Pr&Xof8" | ConvertTo-SecureString -AsPlainText -Force
- $credential = New-Object System.Management.Automation.PSCredential($username, $password)
-
- # ------------------------------------------------------------
- # Execute job remotely using the extracted JCL
- # ------------------------------------------------------------
- Write-Host "Connecting to remote server $ComputerName ..."
- $exitCode = Invoke-Command -ComputerName $ComputerName `
- -Credential $credential `
- -Authentication CredSSP `
- -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck) `
- -ArgumentList $JobName, $JCL, $Env `
- -ScriptBlock {
- param($JobName, $JCL, $Env)
-
- Write-Host "Remote execution - JobName: $JobName, JCL: $JCL, Env: $Env"
-
- $process = Start-Process -FilePath "powershell.exe" `
- -ArgumentList "-ExecutionPolicy Bypass -File `"E:\PSScript\RCSubmit-Job.ps1`" -JobName `"$JCL`" -Env `"$Env`"" `
- -NoNewWindow -Wait -PassThru
- return $process.ExitCode
- }
-
- if ($exitCode -eq 0) {
- Write-Host "Job $JobName (JCL: $JCL) completed successfully at $(Get-Date)" -ForegroundColor Green
- } else {
- Write-Error "Job $JobName (JCL: $JCL) failed with exit code: $exitCode"
- }
-}
-catch {
- Write-Error "Job $JobName failed with error: $($_.Exception.Message)"
- $exitCode = 1
-}
-finally {
- # ------------------------------------------------------------
- # Log exit code to the appropriate database
- # ------------------------------------------------------------
- try {
- $connectionString = "Server=localhost;Database=$DatabaseName;Trusted_Connection=true;"
- $connection = New-Object System.Data.SqlClient.SqlConnection($connectionString)
- $connection.Open()
-
- $command = $connection.CreateCommand()
- $command.CommandText = @"
- INSERT INTO dbo.JobExitCodes (JobName, RunDate, ExitCode, RecordedTime)
- VALUES ('$JobName', CAST(GETDATE() AS DATE), $exitCode, GETDATE());
-"@
- $command.ExecuteNonQuery()
- $connection.Close()
- Write-Host "Exit code $exitCode logged to database $DatabaseName for job $JobName"
- }
- catch {
- $errorMsg = $_.Exception.Message
- Write-Host "Failed to log exit code to database $DatabaseName`: $errorMsg"
- }
-}
-
-exit $exitCode
\ No newline at end of file
diff --git a/SQLAgent/02_Test/5_PowerShell_Scripts/RCSubmit-Job.ps1 b/SQLAgent/02_Test/5_PowerShell_Scripts/RCSubmit-Job.ps1
deleted file mode 100644
index b9893d7..0000000
--- a/SQLAgent/02_Test/5_PowerShell_Scripts/RCSubmit-Job.ps1
+++ /dev/null
@@ -1,108 +0,0 @@
-param(
- [string]$JobName,
- [string]$Env
-)
-
-# --- Parameter Validation ---
-if (-not $JobName) {
- Write-Host "JobName parameter is required" -ForegroundColor Red
- exit 1
-}
-if (-not $Env) {
- Write-Host "Environment (Env) parameter is required" -ForegroundColor Red
- exit 1
-}
-
-# --- Execute Job ---
-Write-Host "Submitting job: $JobName in environment: $Env" -ForegroundColor Cyan
-$output = & "$env:rcbin\submit.exe" -DSN="DOESTAX.$Env.JOBS.BATCH.LIB($JobName)"
-$exitCode = [int]$LASTEXITCODE
-$isSuccess = 0
-
-# --- Parse SYSLOG Path ---
-$syslogPath = $null
-$syslogFolder = "Not found"
-$content = @()
-$summary = @()
-
-try {
- $syslogPath = $output | Select-String -Pattern "SYSLOG=\[(.*)\]" | ForEach-Object { $_.Matches.Groups[1].Value }
-
- if ($syslogPath -and (Test-Path $syslogPath)) {
- $syslogFolder = Split-Path $syslogPath -Parent
- $content = Get-Content $syslogPath -ErrorAction Stop
- $summary = $content | Select-String -Pattern "%Job Overall Stats:" -Context 0,7 | ForEach-Object {
- $_.Context.PostContext | Select-Object -Skip 1 -First 5
- }
- } else {
- Write-Host "SYSLOG path not found or inaccessible: $syslogPath" -ForegroundColor Yellow
- $summary = @("SYSLOG file not found in output", "Raw output:", $output -join "`n")
- }
-}
-catch {
- Write-Host "Error processing SYSLOG: $($_.Exception.Message)" -ForegroundColor Yellow
- $summary = @("Error reading SYSLOG: $($_.Exception.Message)", "Raw output:", $output -join "`n")
-}
-
-# --- Evaluate Return Codes ---
-$successConditions = @(
- { $JobName -eq "GSIRQ300" -and $exitCode -eq 50 },
- { $JobName -eq "DTSGWAGE" -and $exitCode -eq 8 },
- { $JobName -eq "DTSGCHKS" -and $exitCode -eq 8 },
- { $JobName -eq "DTSGPAYT" -and $exitCode -eq 8 },
- { $JobName -eq "DTSBXACH" -and $exitCode -eq 2 },
- { $JobName -eq "DTSBXREL" -and $exitCode -eq 2 },
- { $JobName -eq "DTSMIN02" -and $exitCode -eq 4 },
- { $JobName -eq "DTSBE405" -and $exitCode -eq 910 },
- { $JobName -eq "DTSBXREJ" -and $exitCode -eq 4 },
- { $JobName -eq "DTSRQ444" -and $exitCode -eq 4 },
- { $exitCode -eq 0 }
-)
-
-if ($successConditions | Where-Object { & $_ }) {
- Write-Host "Job $JobName succeeded with code $exitCode" -ForegroundColor Green
- $isSuccess = 0
-} else {
- Write-Host "Job $JobName failed with code $exitCode" -ForegroundColor Red
- $isSuccess = 1
- # Only use error if we don't have a proper summary
- if ($summary.Count -eq 0) {
- $summary = @($Error[0])
- }
-}
-
-# --- Email Notification ---
-$smtpServer = "smtp4.dc.gov"
-$fromEmail = "Dutas@dc.gov"
-$toEmail = "zarath.lalputan@dc.gov"
-$ccEmail = @("srujani.chandragiri@dc.gov")
-
-$emailBody = @"
-
-DUTAS Batch Job: $JobName Execution Report
-==========================================
-$($summary -join "`n")
-==========================================
-
-Return Code: $exitCode
-Status: $(if ($isSuccess -eq 0) { "SUCCESS" } else { "FAILED" })
-JOBLOG Path: $syslogFolder
-
-"@
-
-try {
- Send-MailMessage -SmtpServer $smtpServer -Port 25 `
- -From $fromEmail -To $toEmail -Cc $ccEmail `
- -Subject "DUTAS-[$Env] Job Status: $JobName - $(if ($isSuccess -eq 0) { 'SUCCESS' } else { 'FAILED' })" `
- -Body $emailBody -BodyAsHtml
- Write-Host "Email sent successfully to $toEmail" -ForegroundColor Cyan
-}
-catch {
- Write-Host "Failed to send email: $($_.Exception.Message)" -ForegroundColor Yellow
-}
-
-Write-Host "`n---------------------------------------------"
-Write-Host "Job: $JobName | ExitCode: $exitCode | Status: $(if ($isSuccess -eq 0) { 'SUCCESS' } else { 'FAILED' })"
-Write-Host "---------------------------------------------`n"
-
-exit $isSuccess
\ No newline at end of file
diff --git a/SQLAgent/02_Test/6_Backup_Restore/Backup-Restore-Guide.docx b/SQLAgent/02_Test/6_Backup_Restore/Backup-Restore-Guide.docx
deleted file mode 100644
index c19787a..0000000
Binary files a/SQLAgent/02_Test/6_Backup_Restore/Backup-Restore-Guide.docx and /dev/null differ
diff --git a/SQLAgent/02_Test/6_Backup_Restore/Backup-SQLAgent.ps1 b/SQLAgent/02_Test/6_Backup_Restore/Backup-SQLAgent.ps1
deleted file mode 100644
index e74cf14..0000000
--- a/SQLAgent/02_Test/6_Backup_Restore/Backup-SQLAgent.ps1
+++ /dev/null
@@ -1,48 +0,0 @@
-# ===================================================================
-# SQL Agent Jobs Backup Script (PowerShell)
-# Modern Version using SqlServer module
-# & "E:\Neeraj\SqlAgent\v2\01_Test\6_Backup\Backup-SQLAgent.ps1" `
-# -ServerName "DOES-DUTAS-SQL1" `
-# -BackupPath "\\DOES-RAINVM-TST\E$\Neeraj\SqlAgent\Backup\"
-#
-# ===================================================================
-
-param (
- [Parameter(Mandatory = $true)]
- [string]$ServerName,
-
- [Parameter(Mandatory = $true)]
- [string]$BackupPath
-)
-
-# Load SQL Server PowerShell module
-Import-Module SqlServer -ErrorAction Stop
-
-# Create timestamp and output paths
-$Timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
-$ZipFile = Join-Path $BackupPath "SQLAgentJobs_$Timestamp.zip"
-
-# Ensure backup folder exists
-if (-not (Test-Path $BackupPath)) {
- New-Item -ItemType Directory -Path $BackupPath | Out-Null
-}
-
-# Connect to SQL Server
-$server = New-Object Microsoft.SqlServer.Management.Smo.Server $ServerName
-
-# Export all jobs as individual SQL scripts
-$JobFiles = @()
-foreach ($job in $server.JobServer.Jobs) {
- $SafeJobName = ($job.Name -replace '[\\/:*?"<>|]', '_')
- $FileName = Join-Path $BackupPath "$SafeJobName`_$Timestamp.sql"
- $job.Script() | Out-File -FilePath $FileName -Encoding UTF8
- $JobFiles += $FileName
-}
-
-# Compress all SQL files into a single ZIP
-Compress-Archive -Path $JobFiles -DestinationPath $ZipFile -Force
-
-# Optional: clean up individual .sql files
-# Remove-Item -Path $JobFiles
-
-Write-Host "SQL Agent jobs backup complete: $ZipFile" -ForegroundColor Green
diff --git a/SQLAgent/02_Test/6_Backup_Restore/BackupDB.sql b/SQLAgent/02_Test/6_Backup_Restore/BackupDB.sql
deleted file mode 100644
index 0177bca..0000000
--- a/SQLAgent/02_Test/6_Backup_Restore/BackupDB.sql
+++ /dev/null
@@ -1,19 +0,0 @@
-USE master;
-GO
-
-DECLARE @SrcDB NVARCHAR(128) = 'TestDUTASJobSchedule';
-DECLARE @BackupPath NVARCHAR(260) = '\\DOES-RAINVM-TST\E$\Neeraj\SqlAgent\Backup\' + @SrcDB + '.bak';
-DECLARE @SQL NVARCHAR(MAX);
-
--- Dynamic SQL for backup
-SET @SQL = '
-BACKUP DATABASE [' + @SrcDB + ']
-TO DISK = N''' + @BackupPath + '''
-WITH INIT, COMPRESSION, STATS = 10;
-';
-
--- Execute backup
-EXEC(@SQL);
-
-PRINT 'Backup completed: ' + @BackupPath;
-GO
diff --git a/SQLAgent/02_Test/6_Backup_Restore/Cleanup-SQLAgent.ps1 b/SQLAgent/02_Test/6_Backup_Restore/Cleanup-SQLAgent.ps1
deleted file mode 100644
index edcb054..0000000
--- a/SQLAgent/02_Test/6_Backup_Restore/Cleanup-SQLAgent.ps1
+++ /dev/null
@@ -1,45 +0,0 @@
-<#
-.SYNOPSIS
-Deletes SQL Agent jobs whose names start with a given environment prefix (e.g., DEVL, TEST, PROD).
-
-.PARAMETER ServerName
-SQL Server instance name (use FCI virtual name if clustered).
-
-.PARAMETER Env
-Environment prefix for job deletion (e.g., DEVL, TEST, PROD).
-
-.EXAMPLE
-.\Cleanup-SQLAgent.ps1 -ServerName "DOES-DUTAS-SQL1" -Env "DEVL"
-#>
-
-param (
- [Parameter(Mandatory = $true)]
- [string]$ServerName,
-
- [Parameter(Mandatory = $true)]
- [string]$Environment
-)
-
-# Load SQL Server module
-Import-Module SqlServer -ErrorAction Stop
-
-# Connect to SQL Server
-$server = New-Object Microsoft.SqlServer.Management.Smo.Server $ServerName
-
-# Create log file path (same folder as script)
-$ScriptRoot = Split-Path -Parent $MyInvocation.MyCommand.Definition
-$LogPath = Join-Path $ScriptRoot "CleanupSQLAgent_$($Environment)_$(Get-Date -Format 'yyyyMMdd_HHmmss').log"
-
-"=== SQL Agent Cleanup Started for $Environment : $(Get-Date) ===" | Out-File $LogPath -Encoding UTF8
-
-# Take a snapshot of all jobs first (avoids collection modification issue)
-$jobsToDelete = @($server.JobServer.Jobs | Where-Object { $_.Name -like "$Environment*" })
-
-foreach ($job in $jobsToDelete) {
- Write-Host "Deleting job: $($job.Name)" -ForegroundColor Yellow
- "Deleting job: $($job.Name)" | Out-File $LogPath -Append -Encoding UTF8
- $job.Drop()
-}
-
-"=== Cleanup Complete for $Environment : $(Get-Date) ===" | Out-File $LogPath -Append -Encoding UTF8
-Write-Host "All $Environment SQL Agent jobs deleted successfully." -ForegroundColor Green
diff --git a/SQLAgent/02_Test/6_Backup_Restore/CleanupSQLAgent.sql b/SQLAgent/02_Test/6_Backup_Restore/CleanupSQLAgent.sql
deleted file mode 100644
index 43ff71d..0000000
--- a/SQLAgent/02_Test/6_Backup_Restore/CleanupSQLAgent.sql
+++ /dev/null
@@ -1,27 +0,0 @@
-USE msdb;
-GO
-
-DECLARE @EnvPrefix NVARCHAR(50) = N'DEVL'; -- <<< Change this to your environment prefix
-DECLARE @job_id UNIQUEIDENTIFIER;
-DECLARE @job_name NVARCHAR(200);
-
-DECLARE JobCursor CURSOR FOR
-SELECT job_id, name
-FROM msdb.dbo.sysjobs
-WHERE name LIKE @EnvPrefix + '%'; -- Only jobs starting with the given prefix
-
-OPEN JobCursor;
-FETCH NEXT FROM JobCursor INTO @job_id, @job_name;
-
-WHILE @@FETCH_STATUS = 0
-BEGIN
- PRINT 'Deleting job: ' + @job_name;
- EXEC msdb.dbo.sp_delete_job @job_id = @job_id;
- FETCH NEXT FROM JobCursor INTO @job_id, @job_name;
-END
-
-CLOSE JobCursor;
-DEALLOCATE JobCursor;
-
-PRINT 'All SQL Agent jobs starting with prefix ' + @EnvPrefix + ' deleted successfully.';
-GO
diff --git a/SQLAgent/02_Test/6_Backup_Restore/Extract_Backup-SQLAgent.ps1 b/SQLAgent/02_Test/6_Backup_Restore/Extract_Backup-SQLAgent.ps1
deleted file mode 100644
index 760d123..0000000
--- a/SQLAgent/02_Test/6_Backup_Restore/Extract_Backup-SQLAgent.ps1
+++ /dev/null
@@ -1,8 +0,0 @@
-$BackupZip = "\\DOES-RAINVM-TST\E$\Neeraj\SqlAgent\Backup\SQLAgentJobs_20251018_153000.zip"
-$ExtractPath = "\\DOES-RAINVM-TST\E$\Neeraj\SqlAgent\Restore\"
-
-# Create folder if not exist
-if (-not (Test-Path $ExtractPath)) { New-Item -ItemType Directory -Path $ExtractPath | Out-Null }
-
-# Extract the ZIP
-Expand-Archive -Path $BackupZip -DestinationPath $ExtractPath -Force
diff --git a/SQLAgent/02_Test/6_Backup_Restore/RestoreDB.sql b/SQLAgent/02_Test/6_Backup_Restore/RestoreDB.sql
deleted file mode 100644
index d0ae5f7..0000000
--- a/SQLAgent/02_Test/6_Backup_Restore/RestoreDB.sql
+++ /dev/null
@@ -1,31 +0,0 @@
-USE master;
-GO
-
-DECLARE @SrcDB NVARCHAR(128) = 'DevlDUTASJobSchedule'; -- original database
-DECLARE @NewDB NVARCHAR(128) = 'DevlDUTASJobSchedule'; -- database name to restore as
-DECLARE @BackupPath NVARCHAR(260) = '\\DOES-RAINVM-TST\E$\Neeraj\SqlAgent\Backup\' + @SrcDB + '.bak';
-DECLARE @SQL NVARCHAR(MAX);
-
--- Optional: check logical file names inside backup
--- RESTORE FILELISTONLY FROM DISK = @BackupPath;
-
--- Dynamic SQL for restore
-SET @SQL = '
--- Optional: disconnect active connections
-ALTER DATABASE [' + @NewDB + '] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
-
-RESTORE DATABASE [' + @NewDB + ']
-FROM DISK = N''' + @BackupPath + '''
-WITH MOVE N''' + @SrcDB + ''' TO N''\\DOES-RAINVM-TST\E$\SQLData\' + @NewDB + '.mdf'',
- MOVE N''' + @SrcDB + '_log'' TO N''\\DOES-RAINVM-TST\E$\SQLLogs\' + @NewDB + '_log.ldf'',
- REPLACE, STATS = 10;
-
--- Set database back to multi-user
-ALTER DATABASE [' + @NewDB + '] SET MULTI_USER;
-';
-
--- Execute restore
-EXEC(@SQL);
-
-PRINT 'Database restored successfully as ' + @NewDB;
-GO
diff --git a/SQLAgent/02_Test/6_Backup_Restore/RestoreSQLAgent.sql b/SQLAgent/02_Test/6_Backup_Restore/RestoreSQLAgent.sql
deleted file mode 100644
index 697baeb..0000000
--- a/SQLAgent/02_Test/6_Backup_Restore/RestoreSQLAgent.sql
+++ /dev/null
@@ -1,12 +0,0 @@
-# Connect to SQL Server
-$ServerName = "DOES-DUTAS-SQL1"
-$SqlInstance = "localhost" # or server instance name
-
-# Execute each script
-$ScriptFiles = Get-ChildItem -Path $ExtractPath -Filter *.sql
-foreach ($file in $ScriptFiles) {
- Write-Host "Restoring job from: $($file.FullName)"
- sqlcmd -S $SqlInstance -i $file.FullName
-}
-
-Write-Host "All SQL Agent jobs restored successfully."
diff --git a/SQLAgent/03_Prod/1_Database_Setup/CreateDB.sql b/SQLAgent/03_Prod/1_Database_Setup/CreateDB.sql
deleted file mode 100644
index ba6a525..0000000
--- a/SQLAgent/03_Prod/1_Database_Setup/CreateDB.sql
+++ /dev/null
@@ -1,83 +0,0 @@
--- Create the database
-CREATE DATABASE ProdDUTASJobSchedule;
-GO
-
-USE ProdDUTASJobSchedule;
-GO
-
--- Create the main control table
-CREATE TABLE dbo.JobControl
-(
- JobID INT IDENTITY(1,1) NOT NULL,
- JobName VARCHAR(50) NOT NULL,
- ScheduledStartTime TIME(7) NOT NULL,
- SchedulerAction VARCHAR(10) NOT NULL, -- STOP or CONTINUE
- IsActive BIT NOT NULL CONSTRAINT DF_JobControl_IsActive DEFAULT (1),
- CreatedDate DATETIME NOT NULL CONSTRAINT DF_JobControl_CreatedDate DEFAULT (GETDATE()),
- Frequency CHAR(20) NOT NULL CONSTRAINT DF_JobControl_Frequency DEFAULT ('DAILY'),
- FrequencyPattern NVARCHAR(500) NULL, -- JSON scheduling rule
-
- CONSTRAINT PK_JobControl PRIMARY KEY CLUSTERED (JobID ASC),
- CONSTRAINT UQ_JobControl_JobName UNIQUE NONCLUSTERED (JobName ASC),
- CONSTRAINT CK_JobControl_SchedulerAction CHECK (SchedulerAction IN ('STOP', 'CONTINUE'))
-);
-GO
-
--- Create job dependencies table
-CREATE TABLE dbo.JobDependencies (
- DependencyID INT IDENTITY(1,1) PRIMARY KEY,
- JobName VARCHAR(50) NOT NULL,
- PredecessorJobName VARCHAR(50) NULL,
- FOREIGN KEY (JobName) REFERENCES dbo.JobControl(JobName)
-);
-GO
-
--- Create execution history table
-CREATE TABLE dbo.JobExecutionHistory (
- ExecutionID INT IDENTITY(1,1) PRIMARY KEY,
- JobName VARCHAR(50) NOT NULL,
- RunDate DATE NOT NULL,
- ScheduledStartTime TIME NOT NULL,
- ActualStartTime DATETIME NULL,
- ActualEndTime DATETIME NULL,
- Status VARCHAR(20) DEFAULT 'Pending' CHECK (Status IN ('Pending', 'Running', 'Success', 'Failed', 'ForceComplete')),
- ErrorMessage VARCHAR(MAX) NULL,
- OverrideFlag BIT DEFAULT 0,
- OverrideBy VARCHAR(100) NULL,
- OverrideDate DATETIME NULL
-);
-GO
-
--- Create holidays table
-CREATE TABLE dbo.FederalHolidays (
- HolidayID INT IDENTITY(1,1) PRIMARY KEY,
- HolidayDate DATE NOT NULL UNIQUE,
- HolidayName VARCHAR(100) NOT NULL,
- Year INT NOT NULL
-);
-GO
-
--- Create Exit Code table for PowerShell Script
-CREATE TABLE dbo.JobExitCodes
-(
- JobExecutionID INT IDENTITY(1,1) PRIMARY KEY, -- unique ID per execution
- JobName NVARCHAR(128) NOT NULL, -- job name
- RunDate DATE NOT NULL, -- date of execution
- ExitCode INT NOT NULL, -- exit code from job
- RecordedTime DATETIME NOT NULL DEFAULT GETDATE() -- timestamp of execution
-);
-GO
--- Create JobSchedule table
-CREATE TABLE dbo.JobSchedule (
- JobScheduleID INT IDENTITY(1,1) PRIMARY KEY,
- JobName VARCHAR(100) NOT NULL,
- Frequency VARCHAR(20) CHECK (Frequency IN ('Monthly','Quarterly')),
- ScheduledRule NVARCHAR(500) NULL, -- Copy of JSON or rule text from JobControl
- ScheduledDate DATE NOT NULL, -- Planned date (before adjustment)
- AdjustedRunDate DATE NOT NULL, -- Final working-day adjusted date
- MonthOfSchedule CHAR(7) NOT NULL, -- 'YYYY-MM'
- YearOfSchedule INT NOT NULL,
- CreatedOn DATETIME DEFAULT GETDATE(),
- CreatedBy VARCHAR(50) DEFAULT SUSER_SNAME()
-);
-GO
\ No newline at end of file
diff --git a/SQLAgent/03_Prod/1_Database_Setup/InsertHolidays.sql b/SQLAgent/03_Prod/1_Database_Setup/InsertHolidays.sql
deleted file mode 100644
index 9bef23e..0000000
--- a/SQLAgent/03_Prod/1_Database_Setup/InsertHolidays.sql
+++ /dev/null
@@ -1,29 +0,0 @@
-USE [ProdDUTASJobSchedule]
-GO
-SET IDENTITY_INSERT [dbo].[FederalHolidays] ON
-GO
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (1, CAST(N'2025-01-01' AS Date), N'New Years Day', 2025)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (2, CAST(N'2025-01-20' AS Date), N'Martin Luther King Day', 2025)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (3, CAST(N'2025-02-17' AS Date), N'Presidents Day', 2025)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (4, CAST(N'2025-05-26' AS Date), N'Memorial Day', 2025)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (5, CAST(N'2025-06-19' AS Date), N'Juneteenth Day', 2025)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (6, CAST(N'2025-07-04' AS Date), N'Independence Day', 2025)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (7, CAST(N'2025-09-01' AS Date), N'Labor Day', 2025)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (8, CAST(N'2025-10-13' AS Date), N'Columbus Day', 2025)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (9, CAST(N'2025-11-11' AS Date), N'Veterans Day', 2025)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (10, CAST(N'2025-11-27' AS Date), N'Thanksgiving Day', 2025)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (11, CAST(N'2025-12-25' AS Date), N'Christmas Day', 2025)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (12, CAST(N'2026-01-01' AS Date), N'New Years Day', 2026)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (13, CAST(N'2026-01-19' AS Date), N'Martin Luther King Day', 2026)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (14, CAST(N'2026-02-16' AS Date), N'Presidents Day', 2026)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (15, CAST(N'2026-05-25' AS Date), N'Memorial Day', 2026)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (16, CAST(N'2026-06-19' AS Date), N'Juneteenth Day', 2026)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (17, CAST(N'2026-07-03' AS Date), N'Independence Day', 2026)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (18, CAST(N'2026-09-07' AS Date), N'Labor Day', 2026)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (19, CAST(N'2026-10-12' AS Date), N'Columbus Day', 2026)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (20, CAST(N'2026-11-11' AS Date), N'Veterans Day', 2026)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (21, CAST(N'2026-11-26' AS Date), N'Thanksgiving Day', 2026)
-INSERT [dbo].[FederalHolidays] ([HolidayID], [HolidayDate], [HolidayName], [Year]) VALUES (22, CAST(N'2026-12-25' AS Date), N'Christmas Day', 2026)
-GO
-SET IDENTITY_INSERT [dbo].[FederalHolidays] OFF
-GO
diff --git a/SQLAgent/03_Prod/1_Database_Setup/InsertJobControl.sql b/SQLAgent/03_Prod/1_Database_Setup/InsertJobControl.sql
deleted file mode 100644
index 6be4559..0000000
--- a/SQLAgent/03_Prod/1_Database_Setup/InsertJobControl.sql
+++ /dev/null
@@ -1,143 +0,0 @@
-USE [ProdDUTASJobSchedule]
-GO
-SET IDENTITY_INSERT [dbo].[JobControl] ON
-GO
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (1, N'PROD_DAILY_DTSBX215', CAST(N'04:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (2, N'PROD_DAILY_DTSBX305', CAST(N'04:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (3, N'PROD_DAILY_DTSGSID0', CAST(N'06:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (4, N'PROD_DAILY_GSIRQ300', CAST(N'06:05:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (5, N'PROD_DAILY_DTSRQ202', CAST(N'06:10:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (6, N'PROD_DAILY_DTSGSID1', CAST(N'06:15:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (7, N'PROD_DAILY_DTSBX202', CAST(N'07:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (8, N'PROD_DAILY_DTSFT202', CAST(N'08:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (9, N'PROD_DAILY_DTSBX432', CAST(N'08:30:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (10, N'PROD_DAILY_DTSGACHD', CAST(N'09:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (11, N'PROD_DAILY_DTSBX303', CAST(N'10:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (12, N'PROD_DAILY_DTSGWAGE', CAST(N'14:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (13, N'PROD_DAILY_DTSGCHKS', CAST(N'14:05:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (14, N'PROD_DAILY_DTSESDAY', CAST(N'14:05:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (15, N'PROD_DAILY_DTSGPAYT', CAST(N'14:10:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (16, N'PROD_DAILY_DTSDX145', CAST(N'16:05:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (17, N'PROD_DAILY_DTSBX629', CAST(N'16:15:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (18, N'PROD_DAILY_DTSBX630', CAST(N'16:30:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (19, N'PROD_DAILY_DTSFRAUD', CAST(N'16:30:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (20, N'PROD_DAILY_DTSRACHD', CAST(N'17:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (21, N'PROD_DAILY_DTSBXACH', CAST(N'17:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (22, N'PROD_DAILY_DTSBXREG', CAST(N'17:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (23, N'PROD_DAILY_DTSBX430', CAST(N'17:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (24, N'PROD_DAILY_DTSBX626', CAST(N'17:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (25, N'PROD_DAILY_DTSBX530', CAST(N'17:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (26, N'PROD_DAILY_DTSBXREL', CAST(N'17:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (27, N'PROD_DAILY_DTSBX450', CAST(N'17:15:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (28, N'PROD_DAILY_DTSBX451', CAST(N'17:15:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (29, N'PROD_DAILY_DTSPACHD', CAST(N'18:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (30, N'PROD_DAILY_DTSPX148', CAST(N'18:05:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (31, N'PROD_DAILY_DTSRQ325', CAST(N'18:05:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (32, N'PROD_DAILY_DTSBX427', CAST(N'18:07:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (33, N'PROD_DAILY_DTSPDAY1', CAST(N'18:10:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (34, N'PROD_DAILY_DTSW4WGE', CAST(N'18:15:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (35, N'PROD_DAILY_DTSGSID2', CAST(N'18:15:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (36, N'PROD_DAILY_DTSGSID9', CAST(N'18:15:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (37, N'PROD_DAILY_DTSMIN01', CAST(N'18:20:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (38, N'PROD_DAILY_DTSMIN02', CAST(N'18:20:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (39, N'PROD_DAILY_DTSRQ459', CAST(N'19:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (40, N'PROD_DAILY_DTSBXPFL', CAST(N'19:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (41, N'PROD_DAILY_DESBD427', CAST(N'19:05:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (42, N'PROD_DAILY_DTSBX403', CAST(N'20:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (43, N'PROD_DAILY_DTSBE405', CAST(N'20:15:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (44, N'PROD_DAILY_DTSBX405', CAST(N'20:15:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (45, N'PROD_DAILY_DTSRQ335', CAST(N'21:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (46, N'PROD_DAILY_DTSBX601', CAST(N'21:25:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.470' AS DateTime), N'DAILY ', N'{"Frequency":"Daily","Days":["Mon","Tue","Wed","Thu","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (47, N'PROD_WEEKLY_DTSGSID0', CAST(N'06:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Sat","Sun"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (48, N'PROD_WEEKLY_DTSGSID1', CAST(N'06:15:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Sat","Sun"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (49, N'PROD_WEEKLY_DTSBX202', CAST(N'07:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Sat","Sun"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (50, N'PROD_WEEKLY_DTSFT202', CAST(N'08:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Sat","Sun"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (51, N'PROD_WEEKLY_DTSBX470', CAST(N'07:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (52, N'PROD_WEEKLY_DTSBXREJ', CAST(N'17:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Tue","Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (53, N'PROD_WEEKLY_DTSPDAY7', CAST(N'19:10:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (54, N'PROD_WEEKLY_DTSBX122', CAST(N'19:14:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (55, N'PROD_WEEKLY_DTSRQ511', CAST(N'19:14:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Fri"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (56, N'PROD_WEEKLY_DTSRQ444', CAST(N'07:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Mon"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (57, N'PROD_WEEKLY_DTSRQ126', CAST(N'09:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.487' AS DateTime), N'WEEKLY ', N'{"Frequency":"Weekly","Days":["Mon"]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (58, N'PROD_MONTHLY_DTSRQ414', CAST(N'18:15:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"FirstWorkday"}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (59, N'PROD_MONTHLY_DTSPMON1', CAST(N'19:15:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"LastWorkday"}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (60, N'PROD_MONTHLY_DTSCHGVB', CAST(N'19:26:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"LastWorkday"}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (61, N'PROD_MONTHLY_DTSCHGVR', CAST(N'19:27:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"LastWorkday"}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (62, N'PROD_MONTHLY_DTSVBKUP', CAST(N'19:26:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"LastWorkday"}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (63, N'PROD_MONTHLY_DTSVRSTR', CAST(N'19:30:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"LastWorkday"}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (64, N'PROD_MONTHLY_DTSRQ442', CAST(N'19:37:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"LastWorkday"}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (65, N'PROD_MONTHLY_DTSBX460', CAST(N'19:35:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"LastWorkday"}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (66, N'PROD_MONTHLY_DTSRQ513', CAST(N'19:37:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"LastWorkday"}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (67, N'PROD_MONTHLY_DTSCHGDC', CAST(N'13:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.493' AS DateTime), N'MONTHLY ', N'{"Frequency":"Monthly","Rule":"FirstWorkday"}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (68, N'PROD_QUARTERLY_DTSRQ119', CAST(N'18:07:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Months":[3,6,9,12],"Day":3}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (69, N'PROD_QUARTERLY_DTSRQ902', CAST(N'18:16:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Months":[3,6,9,12],"Day":1}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (70, N'PROD_QUARTERLY_DTSBX500', CAST(N'21:25:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Months":[3,6,9,12],"Day":1}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (71, N'PROD_QUARTERLY_DTSRQ417', CAST(N'18:07:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Schedule":[{"Month":2,"Day":28},{"Month":5,"Day":31},{"Month":8,"Day":31},{"Month":11,"Day":30}]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (72, N'PROD_QUARTERLY_DTSRQ320', CAST(N'18:07:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Schedule":[{"Month":2,"Day":10},{"Month":5,"Day":10},{"Month":8,"Day":10},{"Month":11,"Day":10}]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (73, N'PROD_QUARTERLY_DTSRQ713', CAST(N'00:00:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Schedule":[{"Month":3,"Day":31},{"Month":6,"Day":30},{"Month":9,"Day":30},{"Month":12,"Day":31}]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (74, N'PROD_QUARTERLY_DTSBX468', CAST(N'15:00:00' AS Time), N'CONTINUE', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Schedule":[{"Month":2,"Day":28},{"Month":5,"Day":30},{"Month":7,"Day":31},{"Month":10,"Day":30}]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (75, N'PROD_QUARTERLY_DTSCHGQ1', CAST(N'18:07:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Rule":"FirstWorkdayOfQuarter"}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (76, N'PROD_QUARTERLY_DTSCHGQ2', CAST(N'18:16:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Rule":"FirstWorkdayOfQuarter"}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (77, N'PROD_QUARTERLY_DTSRQ327', CAST(N'18:07:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Schedule":[{"Month":2,"Day":7},{"Month":5,"Day":7},{"Month":8,"Day":7},{"Month":11,"Day":7}]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (78, N'PROD_QUARTERLY_DTSRQ328', CAST(N'18:16:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Schedule":[{"Month":2,"Day":7},{"Month":5,"Day":7},{"Month":8,"Day":7},{"Month":11,"Day":7}]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (79, N'PROD_QUARTERLY_DTSRQ412', CAST(N'18:07:00' AS Time), N'STOP', 1, CAST(N'2025-10-16T12:59:40.503' AS DateTime), N'QUARTERLY ', N'{"Frequency":"Quarterly","Schedule":[{"Month":1,"Day":15},{"Month":4,"Day":15},{"Month":7,"Day":15},{"Month":10,"Day":15}]}')
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (80, N'PROD_QUARTERLY_DTSRQ793', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (81, N'PROD_QUARTERLY_DTSWGE06', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (82, N'PROD_QUARTERLY_DTSCHGRT', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (83, N'PROD_QUARTERLY_DTSCHRGS', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (84, N'PROD_QUARTERLY_DTSRQ540', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (85, N'PROD_QUARTERLY_DTSRQ591', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (86, N'PROD_QUARTERLY_DTSRTCHG', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (87, N'PROD_QUARTERLY_DTSWGE01', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (88, N'PROD_QUARTERLY_DESBD426', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (89, N'PROD_ONDEMAND_DTSACH01', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (90, N'PROD_ONDEMAND_DTSBX415', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (91, N'PROD_ONDEMAND_DTSBX452', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (92, N'PROD_ONDEMAND_DTSBX453', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (93, N'PROD_ONDEMAND_DTSRQ120', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (94, N'PROD_ONDEMAND_DTSRQ123', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (95, N'PROD_ONDEMAND_DTSRQ125', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (96, N'PROD_ONDEMAND_DTSRQ305', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (97, N'PROD_ONDEMAND_DTSRQ306', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (98, N'PROD_ONDEMAND_DTSRQ308', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (99, N'PROD_ONDEMAND_DTSRQ311', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (100, N'PROD_ONDEMAND_DTSRQ410', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (101, N'PROD_ONDEMAND_DTSRQ411', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (102, N'PROD_ONDEMAND_DTSRQ423', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (103, N'PROD_ONDEMAND_DTSRQ426', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (104, N'PROD_ONDEMAND_DTSRQ429', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (105, N'PROD_ONDEMAND_DTSRQ439', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (106, N'PROD_ONDEMAND_DTSRQ602', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (107, N'PROD_ONDEMAND_DTSRQ606', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (108, N'PROD_ONDEMAND_DTSRQ607', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (109, N'PROD_ONDEMAND_DTSRQ609', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (110, N'PROD_ONDEMAND_DTSRQ611', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (111, N'PROD_ONDEMAND_DTSRQ612', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (112, N'PROD_ONDEMAND_DTSRQ717', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (113, N'PROD_ONDEMAND_DTSRQ718', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (114, N'PROD_ONDEMAND_DTSRQ720', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (115, N'PROD_ONDEMAND_DTSRQ721', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (116, N'PROD_ONDEMAND_DTSRT715', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (117, N'PROD_ONDEMAND_DTSRT716', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (118, N'PROD_ONDEMAND_DTSRT717', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (119, N'PROD_ONDEMAND_DTSRT718', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (120, N'PROD_ONDEMAND_DTSRT719', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (121, N'PROD_ONDEMAND_DTSRT720', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (122, N'PROD_ONDEMAND_DTSRT722', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (123, N'PROD_ONDEMAND_DTSRT723', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.520' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (124, N'PROD_YEARLY_DTSRQ722', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (125, N'PROD_YEARLY_DTSRQ451', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (126, N'PROD_YEARLY_DTSRQ127', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (127, N'PROD_YEARLY_DTSRQ321', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (128, N'PROD_YEARLY_DTSRQ455', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (129, N'PROD_YEARLY_DTSRQ500', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (130, N'PROD_YEARLY_DTSRQ517', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (131, N'PROD_YEARLY_DTSRQ518', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (132, N'PROD_YEARLY_DTSRQ616', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (133, N'PROD_YEARLY_DTSRQ701', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (134, N'PROD_YEARLY_DTSRQ702', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (135, N'PROD_YEARLY_DTSRQ704', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-INSERT [dbo].[JobControl] ([JobID], [JobName], [ScheduledStartTime], [SchedulerAction], [IsActive], [CreatedDate], [Frequency], [FrequencyPattern]) VALUES (136, N'PROD_YEARLY_DTSRQ910', CAST(N'00:00:00' AS Time), N'STOP', 0, CAST(N'2025-10-16T12:59:40.530' AS DateTime), N'ONDEMAND ', NULL)
-GO
-SET IDENTITY_INSERT [dbo].[JobControl] OFF
-GO
\ No newline at end of file
diff --git a/SQLAgent/03_Prod/1_Database_Setup/InsertJobDependencies.sql b/SQLAgent/03_Prod/1_Database_Setup/InsertJobDependencies.sql
deleted file mode 100644
index dcb04d0..0000000
--- a/SQLAgent/03_Prod/1_Database_Setup/InsertJobDependencies.sql
+++ /dev/null
@@ -1,92 +0,0 @@
-USE [ProdDUTASJobSchedule]
-GO
-SET IDENTITY_INSERT [dbo].[JobDependencies] ON
-GO
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (1, N'PROD_DAILY_DTSGSID0', N'PROD_DAILY_DTSBX305')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (2, N'PROD_DAILY_GSIRQ300', N'PROD_DAILY_DTSBX305')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (3, N'PROD_DAILY_DTSRQ202', N'PROD_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (4, N'PROD_DAILY_DTSGSID1', N'PROD_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (5, N'PROD_DAILY_DTSBX202', N'PROD_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (6, N'PROD_DAILY_DTSFT202', N'PROD_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (7, N'PROD_DAILY_DTSBX432', N'PROD_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (8, N'PROD_DAILY_DTSGACHD', N'PROD_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (9, N'PROD_DAILY_DTSBX303', N'PROD_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (10, N'PROD_DAILY_DTSGWAGE', N'PROD_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (11, N'PROD_DAILY_DTSGCHKS', N'PROD_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (12, N'PROD_DAILY_DTSESDAY', N'PROD_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (13, N'PROD_DAILY_DTSGPAYT', N'PROD_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (14, N'PROD_DAILY_DTSDX145', N'PROD_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (15, N'PROD_DAILY_DTSBX629', N'PROD_DAILY_GSIRQ300')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (16, N'PROD_DAILY_DTSBX630', N'PROD_DAILY_DTSBX629')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (17, N'PROD_DAILY_DTSFRAUD', N'PROD_DAILY_DTSBX629')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (18, N'PROD_DAILY_DTSRACHD', N'PROD_DAILY_DTSFRAUD')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (19, N'PROD_DAILY_DTSBXACH', N'PROD_DAILY_DTSFRAUD')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (20, N'PROD_DAILY_DTSBXREG', N'PROD_DAILY_DTSFRAUD')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (21, N'PROD_DAILY_DTSBX430', N'PROD_DAILY_DTSFRAUD')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (22, N'PROD_DAILY_DTSBX626', N'PROD_DAILY_DTSFRAUD')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (23, N'PROD_DAILY_DTSBX530', N'PROD_DAILY_DTSFRAUD')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (24, N'PROD_DAILY_DTSBXREL', N'PROD_DAILY_DTSFRAUD')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (25, N'PROD_DAILY_DTSBX450', N'PROD_DAILY_DTSBXACH')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (26, N'PROD_DAILY_DTSBX450', N'PROD_DAILY_DTSBXREG')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (27, N'PROD_DAILY_DTSBX450', N'PROD_DAILY_DTSBX430')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (28, N'PROD_DAILY_DTSBX450', N'PROD_DAILY_DTSBX626')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (29, N'PROD_DAILY_DTSBX450', N'PROD_DAILY_DTSBX530')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (30, N'PROD_DAILY_DTSBX450', N'PROD_DAILY_DTSBXREL')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (31, N'PROD_DAILY_DTSBX451', N'PROD_DAILY_DTSBXACH')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (32, N'PROD_DAILY_DTSBX451', N'PROD_DAILY_DTSBXREG')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (33, N'PROD_DAILY_DTSBX451', N'PROD_DAILY_DTSBX430')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (34, N'PROD_DAILY_DTSBX451', N'PROD_DAILY_DTSBX626')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (35, N'PROD_DAILY_DTSBX451', N'PROD_DAILY_DTSBX530')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (36, N'PROD_DAILY_DTSBX451', N'PROD_DAILY_DTSBXREL')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (37, N'PROD_DAILY_DTSPACHD', N'PROD_DAILY_DTSBX450')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (38, N'PROD_DAILY_DTSPACHD', N'PROD_DAILY_DTSBX451')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (39, N'PROD_DAILY_DTSPX148', N'PROD_DAILY_DTSPACHD')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (40, N'PROD_DAILY_DTSRQ325', N'PROD_DAILY_DTSPACHD')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (41, N'PROD_DAILY_DTSBX427', N'PROD_DAILY_DTSPX148')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (42, N'PROD_DAILY_DTSBX427', N'PROD_DAILY_DTSRQ325')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (43, N'PROD_DAILY_DTSPDAY1', N'PROD_DAILY_DTSBX427')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (44, N'PROD_DAILY_DTSW4WGE', N'PROD_DAILY_DTSPDAY1')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (45, N'PROD_DAILY_DTSGSID2', N'PROD_DAILY_DTSPDAY1')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (46, N'PROD_DAILY_DTSGSID9', N'PROD_DAILY_DTSPDAY1')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (47, N'PROD_DAILY_DTSMIN01', N'PROD_DAILY_DTSW4WGE')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (48, N'PROD_DAILY_DTSMIN01', N'PROD_DAILY_DTSGSID2')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (49, N'PROD_DAILY_DTSMIN01', N'PROD_DAILY_DTSGSID9')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (50, N'PROD_DAILY_DTSMIN02', N'PROD_DAILY_DTSW4WGE')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (51, N'PROD_DAILY_DTSMIN02', N'PROD_DAILY_DTSGSID2')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (52, N'PROD_DAILY_DTSMIN02', N'PROD_DAILY_DTSGSID9')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (53, N'PROD_DAILY_DTSRQ459', N'PROD_DAILY_DTSMIN01')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (54, N'PROD_DAILY_DTSRQ459', N'PROD_DAILY_DTSMIN02')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (55, N'PROD_DAILY_DTSBXPFL', N'PROD_DAILY_DTSRQ459')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (56, N'PROD_DAILY_DESBD427', N'PROD_DAILY_DTSBXPFL')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (57, N'PROD_DAILY_DTSBX403', N'PROD_DAILY_DTSBXPFL')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (58, N'PROD_DAILY_DTSBE405', N'PROD_DAILY_DTSBXPFL')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (59, N'PROD_DAILY_DTSBX405', N'PROD_DAILY_DTSBXPFL')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (60, N'PROD_DAILY_DTSRQ335', N'PROD_DAILY_DTSBXPFL')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (61, N'PROD_DAILY_DTSBX601', N'PROD_DAILY_DTSRQ335')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (62, N'PROD_WEEKLY_DTSBXREJ', N'PROD_DAILY_DTSBXREL')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (63, N'PROD_WEEKLY_DTSBX122', N'PROD_WEEKLY_DTSPDAY7')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (64, N'PROD_WEEKLY_DTSRQ511', N'PROD_WEEKLY_DTSPDAY7')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (65, N'PROD_MONTHLY_DTSRQ414', N'PROD_DAILY_DTSPDAY1')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (66, N'PROD_MONTHLY_DTSCHGVB', N'PROD_MONTHLY_DTSPMON1')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (67, N'PROD_MONTHLY_DTSCHGVR', N'PROD_MONTHLY_DTSCHGVB')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (68, N'PROD_MONTHLY_DTSVBKUP', N'PROD_MONTHLY_DTSPMON1')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (69, N'PROD_MONTHLY_DTSVRSTR', N'PROD_MONTHLY_DTSVBKUP')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (70, N'PROD_MONTHLY_DTSRQ442', N'PROD_MONTHLY_DTSRQ513')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (71, N'PROD_QUARTERLY_DTSRQ119', N'PROD_DAILY_DTSRQ325')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (72, N'PROD_QUARTERLY_DTSRQ417', N'PROD_DAILY_DTSRQ325')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (73, N'PROD_QUARTERLY_DTSRQ320', N'PROD_DAILY_DTSRQ325')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (74, N'PROD_QUARTERLY_DTSRQ793', N'PROD_DAILY_DTSRQ325')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (75, N'PROD_QUARTERLY_DTSCHGQ1', N'PROD_DAILY_DTSRQ325')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (76, N'PROD_QUARTERLY_DTSRQ327', N'PROD_DAILY_DTSRQ325')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (77, N'PROD_QUARTERLY_DTSRQ412', N'PROD_DAILY_DTSRQ325')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (78, N'PROD_QUARTERLY_DTSRQ591', N'PROD_DAILY_DTSRQ325')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (79, N'PROD_QUARTERLY_DTSRQ902', N'PROD_DAILY_DTSPDAY1')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (80, N'PROD_QUARTERLY_DTSCHGQ2', N'PROD_DAILY_DTSPDAY1')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (81, N'PROD_QUARTERLY_DTSCHGRT', N'PROD_QUARTERLY_DTSRQ591')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (82, N'PROD_QUARTERLY_DTSRQ328', N'PROD_QUARTERLY_DTSRQ327')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (83, N'PROD_QUARTERLY_DTSBX500', N'PROD_QUARTERLY_DTSRQ417')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (84, N'PROD_QUARTERLY_DTSRQ713', N'PROD_MONTHLY_DTSPMON1')
-INSERT [dbo].[JobDependencies] ([DependencyID], [JobName], [PredecessorJobName]) VALUES (85, N'PROD_QUARTERLY_DTSCHRGS', N'PROD_QUARTERLY_DTSCHGRT')
-GO
-SET IDENTITY_INSERT [dbo].[JobDependencies] OFF
-GO
diff --git a/SQLAgent/03_Prod/2_Functions/fn_GetNextWorkday.sql b/SQLAgent/03_Prod/2_Functions/fn_GetNextWorkday.sql
deleted file mode 100644
index 2022e41..0000000
--- a/SQLAgent/03_Prod/2_Functions/fn_GetNextWorkday.sql
+++ /dev/null
@@ -1,17 +0,0 @@
-USE ProdDUTASJobSchedule;
-GO
--- Returns the next valid workday on or after the given date
-CREATE OR ALTER FUNCTION dbo.fn_GetNextWorkday (@InputDate DATE)
-RETURNS DATE
-AS
-BEGIN
- DECLARE @Workday DATE = @InputDate;
-
- WHILE DATENAME(WEEKDAY, @Workday) IN ('Saturday','Sunday')
- OR EXISTS (SELECT 1 FROM dbo.FederalHolidays WHERE HolidayDate = @Workday)
- BEGIN
- SET @Workday = DATEADD(DAY, 1, @Workday);
- END
-
- RETURN @Workday;
-END;
diff --git a/SQLAgent/03_Prod/2_Functions/fn_GetPreviousWorkday.sql b/SQLAgent/03_Prod/2_Functions/fn_GetPreviousWorkday.sql
deleted file mode 100644
index 970562d..0000000
--- a/SQLAgent/03_Prod/2_Functions/fn_GetPreviousWorkday.sql
+++ /dev/null
@@ -1,17 +0,0 @@
-USE ProdDUTASJobSchedule;
-GO
--- Returns the most recent valid workday before or equal to the given date
-CREATE OR ALTER FUNCTION dbo.fn_GetPreviousWorkday (@InputDate DATE)
-RETURNS DATE
-AS
-BEGIN
- DECLARE @Workday DATE = @InputDate;
-
- WHILE DATENAME(WEEKDAY, @Workday) IN ('Saturday','Sunday')
- OR EXISTS (SELECT 1 FROM dbo.FederalHolidays WHERE HolidayDate = @Workday)
- BEGIN
- SET @Workday = DATEADD(DAY, -1, @Workday);
- END
-
- RETURN @Workday;
-END;
diff --git a/SQLAgent/03_Prod/2_Stored_Procedures/usp_CheckJobConditions.sql b/SQLAgent/03_Prod/2_Stored_Procedures/usp_CheckJobConditions.sql
deleted file mode 100644
index 60e8414..0000000
Binary files a/SQLAgent/03_Prod/2_Stored_Procedures/usp_CheckJobConditions.sql and /dev/null differ
diff --git a/SQLAgent/03_Prod/2_Stored_Procedures/usp_CheckJobConditions_Generic.sql b/SQLAgent/03_Prod/2_Stored_Procedures/usp_CheckJobConditions_Generic.sql
deleted file mode 100644
index c0ef0d1..0000000
Binary files a/SQLAgent/03_Prod/2_Stored_Procedures/usp_CheckJobConditions_Generic.sql and /dev/null differ
diff --git a/SQLAgent/03_Prod/2_Stored_Procedures/usp_CreateSQLAgentJob.sql b/SQLAgent/03_Prod/2_Stored_Procedures/usp_CreateSQLAgentJob.sql
deleted file mode 100644
index f6702a8..0000000
Binary files a/SQLAgent/03_Prod/2_Stored_Procedures/usp_CreateSQLAgentJob.sql and /dev/null differ
diff --git a/SQLAgent/03_Prod/2_Stored_Procedures/usp_ForceComplete.sql b/SQLAgent/03_Prod/2_Stored_Procedures/usp_ForceComplete.sql
deleted file mode 100644
index cbd4142..0000000
Binary files a/SQLAgent/03_Prod/2_Stored_Procedures/usp_ForceComplete.sql and /dev/null differ
diff --git a/SQLAgent/03_Prod/2_Stored_Procedures/usp_ScheduleMonthlyJob.sql b/SQLAgent/03_Prod/2_Stored_Procedures/usp_ScheduleMonthlyJob.sql
deleted file mode 100644
index 37709c5..0000000
Binary files a/SQLAgent/03_Prod/2_Stored_Procedures/usp_ScheduleMonthlyJob.sql and /dev/null differ
diff --git a/SQLAgent/03_Prod/2_Stored_Procedures/usp_TriggerMissedJobs.sql b/SQLAgent/03_Prod/2_Stored_Procedures/usp_TriggerMissedJobs.sql
deleted file mode 100644
index c5fd42f..0000000
Binary files a/SQLAgent/03_Prod/2_Stored_Procedures/usp_TriggerMissedJobs.sql and /dev/null differ
diff --git a/SQLAgent/03_Prod/2_Stored_Procedures/usp_UpdateJobStatus_Generic.sql b/SQLAgent/03_Prod/2_Stored_Procedures/usp_UpdateJobStatus_Generic.sql
deleted file mode 100644
index 20c3f41..0000000
Binary files a/SQLAgent/03_Prod/2_Stored_Procedures/usp_UpdateJobStatus_Generic.sql and /dev/null differ
diff --git a/SQLAgent/03_Prod/3_Job_Maintenance/ActivateMonthlyJob.sql b/SQLAgent/03_Prod/3_Job_Maintenance/ActivateMonthlyJob.sql
deleted file mode 100644
index 16d0920..0000000
--- a/SQLAgent/03_Prod/3_Job_Maintenance/ActivateMonthlyJob.sql
+++ /dev/null
@@ -1,65 +0,0 @@
-USE msdb;
-GO
-
--- Schedule PROD Monthly Jobs for October 2025
-------------------------------------------------
-EXEC dbo.usp_ScheduleMonthlyJob
- @JobName='PROD_MONTHLY_DTSRQ414',
- @Env='PROD',
- @RunDate='2025-11-03',
- @RunTime='18:15:00';
-
-EXEC dbo.usp_ScheduleMonthlyJob
- @JobName='PROD_MONTHLY_DTSPMON1',
- @Env='PROD',
- @RunDate='2025-10-31',
- @RunTime='19:15:00';
-
-EXEC dbo.usp_ScheduleMonthlyJob
- @JobName='PROD_MONTHLY_DTSCHGVB',
- @Env='PROD',
- @RunDate='2025-10-31',
- @RunTime='19:26:00';
-
-EXEC dbo.usp_ScheduleMonthlyJob
- @JobName='PROD_MONTHLY_DTSCHGVR',
- @Env='PROD',
- @RunDate='2025-10-31',
- @RunTime='19:27:00';
-
-EXEC dbo.usp_ScheduleMonthlyJob
- @JobName='PROD_MONTHLY_DTSVBKUP',
- @Env='PROD',
- @RunDate='2025-10-31',
- @RunTime='19:26:00';
-
-EXEC dbo.usp_ScheduleMonthlyJob
- @JobName='PROD_MONTHLY_DTSVRSTR',
- @Env='PROD',
- @RunDate='2025-10-31',
- @RunTime='19:30:00';
-
-EXEC dbo.usp_ScheduleMonthlyJob
- @JobName='PROD_MONTHLY_DTSRQ442',
- @Env='PROD',
- @RunDate='2025-10-31',
- @RunTime='19:37:00';
-
-EXEC dbo.usp_ScheduleMonthlyJob
- @JobName='PROD_MONTHLY_DTSBX460',
- @Env='PROD',
- @RunDate='2025-10-31',
- @RunTime='19:35:00';
-
-EXEC dbo.usp_ScheduleMonthlyJob
- @JobName='PROD_MONTHLY_DTSRQ513',
- @Env='PROD',
- @RunDate='2025-10-31',
- @RunTime='19:37:00';
-
-EXEC dbo.usp_ScheduleMonthlyJob
- @JobName='PROD_MONTHLY_DTSCHGDC',
- @Env='PROD',
- @RunDate='2025-11-03',
- @RunTime='13:00:00';
-GO
diff --git a/SQLAgent/03_Prod/3_Job_Maintenance/AddDailyJobs.sql b/SQLAgent/03_Prod/3_Job_Maintenance/AddDailyJobs.sql
deleted file mode 100644
index d0c9796..0000000
--- a/SQLAgent/03_Prod/3_Job_Maintenance/AddDailyJobs.sql
+++ /dev/null
@@ -1,279 +0,0 @@
-USE [msdb]
-GO
-
--- Execute the stored procedure for each job
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSBX215',
- @StartTimeHHMMSS = 40000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSBX305',
- @StartTimeHHMMSS = 40000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSGSID0',
- @StartTimeHHMMSS = 60000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_GSIRQ300',
- @StartTimeHHMMSS = 60500,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSRQ202',
- @StartTimeHHMMSS = 61000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSGSID1',
- @StartTimeHHMMSS = 61500,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSBX202',
- @StartTimeHHMMSS = 70000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSFT202',
- @StartTimeHHMMSS = 80000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSBX432',
- @StartTimeHHMMSS = 83000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSGACHD',
- @StartTimeHHMMSS = 90000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSBX303',
- @StartTimeHHMMSS = 100000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSGWAGE',
- @StartTimeHHMMSS = 140000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSGCHKS',
- @StartTimeHHMMSS = 140500,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSESDAY',
- @StartTimeHHMMSS = 140500,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSGPAYT',
- @StartTimeHHMMSS = 141000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSDX145',
- @StartTimeHHMMSS = 160500,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSBX629',
- @StartTimeHHMMSS = 161500,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSBX630',
- @StartTimeHHMMSS = 163000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSFRAUD',
- @StartTimeHHMMSS = 163000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSRACHD',
- @StartTimeHHMMSS = 170000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSBXACH',
- @StartTimeHHMMSS = 170000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSBXREG',
- @StartTimeHHMMSS = 170000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSBX430',
- @StartTimeHHMMSS = 170000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSBX626',
- @StartTimeHHMMSS = 170000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSBX530',
- @StartTimeHHMMSS = 170000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSBXREL',
- @StartTimeHHMMSS = 170000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSBX450',
- @StartTimeHHMMSS = 171500,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSBX451',
- @StartTimeHHMMSS = 171500,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSPACHD',
- @StartTimeHHMMSS = 180000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSPX148',
- @StartTimeHHMMSS = 180500,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSRQ325',
- @StartTimeHHMMSS = 180500,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSBX427',
- @StartTimeHHMMSS = 180700,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSPDAY1',
- @StartTimeHHMMSS = 181000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSW4WGE',
- @StartTimeHHMMSS = 181500,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSGSID2',
- @StartTimeHHMMSS = 181500,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSGSID9',
- @StartTimeHHMMSS = 181500,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSMIN01',
- @StartTimeHHMMSS = 182000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSMIN02',
- @StartTimeHHMMSS = 182000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSRQ459',
- @StartTimeHHMMSS = 190000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSBXPFL',
- @StartTimeHHMMSS = 190000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DESBD427',
- @StartTimeHHMMSS = 190500,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSBX403',
- @StartTimeHHMMSS = 200000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSBE405',
- @StartTimeHHMMSS = 201500,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSBX405',
- @StartTimeHHMMSS = 201500,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSRQ335',
- @StartTimeHHMMSS = 210000,
- @Env = 'PROD',
- @Frequency = 'DAILY';
-
-EXEC [dbo].[usp_CreateSQLAgentJob]
- @JobName = 'PROD_DAILY_DTSBX601',
- @StartTimeHHMMSS = 212500,
- @Env = 'PROD',
- @Frequency = 'DAILY';
\ No newline at end of file
diff --git a/SQLAgent/03_Prod/3_Job_Maintenance/AddMonthlyJobs.sql b/SQLAgent/03_Prod/3_Job_Maintenance/AddMonthlyJobs.sql
deleted file mode 100644
index 857bd74..0000000
--- a/SQLAgent/03_Prod/3_Job_Maintenance/AddMonthlyJobs.sql
+++ /dev/null
@@ -1,76 +0,0 @@
-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 = 'PROD_MONTHLY_DTSRQ414',
- @StartTimeHHMMSS = 181500,
- @Env = 'PROD',
- @Frequency = 'MONTHLY';
-
--- 2.
-EXEC dbo.usp_CreateSQLAgentJob
- @JobName = 'PROD_MONTHLY_DTSPMON1',
- @StartTimeHHMMSS = 191500,
- @Env = 'PROD',
- @Frequency = 'MONTHLY';
-
--- 3.
-EXEC dbo.usp_CreateSQLAgentJob
- @JobName = 'PROD_MONTHLY_DTSCHGVB',
- @StartTimeHHMMSS = 192600,
- @Env = 'PROD',
- @Frequency = 'MONTHLY';
-
--- 4.
-EXEC dbo.usp_CreateSQLAgentJob
- @JobName = 'PROD_MONTHLY_DTSCHGVR',
- @StartTimeHHMMSS = 192700,
- @Env = 'PROD',
- @Frequency = 'MONTHLY';
-
--- 5.
-EXEC dbo.usp_CreateSQLAgentJob
- @JobName = 'PROD_MONTHLY_DTSVBKUP',
- @StartTimeHHMMSS = 192600,
- @Env = 'PROD',
- @Frequency = 'MONTHLY';
-
--- 6.
-EXEC dbo.usp_CreateSQLAgentJob
- @JobName = 'PROD_MONTHLY_DTSVRSTR',
- @StartTimeHHMMSS = 193000,
- @Env = 'PROD',
- @Frequency = 'MONTHLY';
-
--- 7.
-EXEC dbo.usp_CreateSQLAgentJob
- @JobName = 'PROD_MONTHLY_DTSRQ442',
- @StartTimeHHMMSS = 193700,
- @Env = 'PROD',
- @Frequency = 'MONTHLY';
-
--- 8.
-EXEC dbo.usp_CreateSQLAgentJob
- @JobName = 'PROD_MONTHLY_DTSBX460',
- @StartTimeHHMMSS = 193500,
- @Env = 'PROD',
- @Frequency = 'MONTHLY';
-
--- 9.
-EXEC dbo.usp_CreateSQLAgentJob
- @JobName = 'PROD_MONTHLY_DTSRQ513',
- @StartTimeHHMMSS = 193700,
- @Env = 'PROD',
- @Frequency = 'MONTHLY';
-
--- 10.
-EXEC dbo.usp_CreateSQLAgentJob
- @JobName = 'PROD_MONTHLY_DTSCHGDC',
- @StartTimeHHMMSS = 130000,
- @Env = 'PROD',
- @Frequency = 'MONTHLY';
-GO
diff --git a/SQLAgent/03_Prod/3_Job_Maintenance/AddOneJob.sql b/SQLAgent/03_Prod/3_Job_Maintenance/AddOneJob.sql
deleted file mode 100644
index 68cd75b..0000000
--- a/SQLAgent/03_Prod/3_Job_Maintenance/AddOneJob.sql
+++ /dev/null
@@ -1,9 +0,0 @@
-USE [msdb]
-GO
-
--- Create a job that runs Monday-Friday at 4:00 AM
-EXEC dbo.usp_CreateSQLAgentJob
- @JobName = 'PROD_DAILY_DTSBX215',
- @StartTimeHHMMSS = 40000, -- For 4:00:00 AM (143000 for 2:30:00 PM)
- @Env = 'PROD',
- @Frequency = 'DAILY';
\ No newline at end of file
diff --git a/SQLAgent/03_Prod/3_Job_Maintenance/AddWeeklyJobs.sql b/SQLAgent/03_Prod/3_Job_Maintenance/AddWeeklyJobs.sql
deleted file mode 100644
index 409647f..0000000
--- a/SQLAgent/03_Prod/3_Job_Maintenance/AddWeeklyJobs.sql
+++ /dev/null
@@ -1,81 +0,0 @@
-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 = 'PROD_WEEKLY_DTSGSID0',
- @StartTimeHHMMSS = 60000,
- @Env = 'PROD',
- @Frequency = 'WEEKLY';
-
--- 2.
-EXEC dbo.usp_CreateSQLAgentJob
- @JobName = 'PROD_WEEKLY_DTSGSID1',
- @StartTimeHHMMSS = 61500,
- @Env = 'PROD',
- @Frequency = 'WEEKLY';
-
--- 3.
-EXEC dbo.usp_CreateSQLAgentJob
- @JobName = 'PROD_WEEKLY_DTSBX202',
- @StartTimeHHMMSS = 70000,
- @Env = 'PROD',
- @Frequency = 'WEEKLY';
-
--- 4.
-EXEC dbo.usp_CreateSQLAgentJob
- @JobName = 'PROD_WEEKLY_DTSFT202',
- @StartTimeHHMMSS = 80000,
- @Env = 'PROD',
- @Frequency = 'WEEKLY';
-
--- 5.
-EXEC dbo.usp_CreateSQLAgentJob
- @JobName = 'PROD_WEEKLY_DTSBX470',
- @StartTimeHHMMSS = 70000,
- @Env = 'PROD',
- @Frequency = 'WEEKLY';
-
--- 6.
-EXEC dbo.usp_CreateSQLAgentJob
- @JobName = 'PROD_WEEKLY_DTSBXREJ',
- @StartTimeHHMMSS = 170000,
- @Env = 'PROD',
- @Frequency = 'WEEKLY';
-
--- 7.
-EXEC dbo.usp_CreateSQLAgentJob
- @JobName = 'PROD_WEEKLY_DTSPDAY7',
- @StartTimeHHMMSS = 191000,
- @Env = 'PROD',
- @Frequency = 'WEEKLY';
-
--- 8.
-EXEC dbo.usp_CreateSQLAgentJob
- @JobName = 'PROD_WEEKLY_DTSBX122',
- @StartTimeHHMMSS = 191400,
- @Env = 'PROD',
- @Frequency = 'WEEKLY';
-
--- 9.
-EXEC dbo.usp_CreateSQLAgentJob
- @JobName = 'PROD_WEEKLY_DTSRQ511',
- @StartTimeHHMMSS = 191400,
- @Env = 'PROD',
- @Frequency = 'WEEKLY';
-
--- 10.
-EXEC dbo.usp_CreateSQLAgentJob
- @JobName = 'PROD_WEEKLY_DTSRQ444',
- @StartTimeHHMMSS = 70000,
- @Env = 'PROD',
- @Frequency = 'WEEKLY';
-
--- 11.
-EXEC dbo.usp_CreateSQLAgentJob
- @JobName = 'PROD_WEEKLY_DTSRQ126',
- @StartTimeHHMMSS = 90000,
- @Env = 'PROD',
- @Frequency = 'WEEKLY';
\ No newline at end of file
diff --git a/SQLAgent/03_Prod/3_Job_Maintenance/DailyJobScheduleLookup.sql b/SQLAgent/03_Prod/3_Job_Maintenance/DailyJobScheduleLookup.sql
deleted file mode 100644
index 6cfa29c..0000000
--- a/SQLAgent/03_Prod/3_Job_Maintenance/DailyJobScheduleLookup.sql
+++ /dev/null
@@ -1,86 +0,0 @@
-/********************************************************************************************
- 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:
- • Uses MSDB’s internal schedule definitions (sysschedules, sysjobschedules).
- • Supports One-time, Daily, Weekly, and Monthly schedule types.
- • 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 = 'PROD'; -- Change for DEVL or TEST
-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
diff --git a/SQLAgent/03_Prod/3_Job_Maintenance/DeactivateMonthlyJob.sql b/SQLAgent/03_Prod/3_Job_Maintenance/DeactivateMonthlyJob.sql
deleted file mode 100644
index 57c1e61..0000000
--- a/SQLAgent/03_Prod/3_Job_Maintenance/DeactivateMonthlyJob.sql
+++ /dev/null
@@ -1,12 +0,0 @@
-USE ProdDUTASJobSchedule;
-GO
-
-UPDATE dbo.JobControl
-SET IsActive = 0
-WHERE Frequency = 'MONTHLY';
-GO
-
--- Optional: Verify changes
-SELECT JobName, Frequency, IsActive
-FROM dbo.JobControl
-WHERE Frequency = 'MONTHLY';
diff --git a/SQLAgent/03_Prod/3_Job_Maintenance/DetachDeleteScheduleByName.sql b/SQLAgent/03_Prod/3_Job_Maintenance/DetachDeleteScheduleByName.sql
deleted file mode 100644
index c6ddedc..0000000
--- a/SQLAgent/03_Prod/3_Job_Maintenance/DetachDeleteScheduleByName.sql
+++ /dev/null
@@ -1,13 +0,0 @@
--- If you know both the job name and schedule name
-DECLARE @JobName NVARCHAR(100) = 'PROD_MONTHLY_DTSCHGDC';
-DECLARE @ScheduleName NVARCHAR(200) = 'PROD_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;
diff --git a/SQLAgent/03_Prod/3_Job_Maintenance/ForceCompleteJob.sql b/SQLAgent/03_Prod/3_Job_Maintenance/ForceCompleteJob.sql
deleted file mode 100644
index 4d12daa..0000000
--- a/SQLAgent/03_Prod/3_Job_Maintenance/ForceCompleteJob.sql
+++ /dev/null
@@ -1,16 +0,0 @@
-USE ProdDUTASJobSchedule;
-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);
\ No newline at end of file
diff --git a/SQLAgent/03_Prod/3_Job_Maintenance/JobInfo.sql b/SQLAgent/03_Prod/3_Job_Maintenance/JobInfo.sql
deleted file mode 100644
index b4a0514..0000000
--- a/SQLAgent/03_Prod/3_Job_Maintenance/JobInfo.sql
+++ /dev/null
@@ -1,47 +0,0 @@
-USE msdb;
-GO
-
-PRINT '================================================================================';
-PRINT 'SECTION 1: JOB CONTROL INFORMATION';
-PRINT '================================================================================';
-GO
-
--- View all active jobs
-SELECT JobName, ScheduledStartTime, Frequency, IsActive
-FROM ProdDUTASJobSchedule.dbo.JobControl
-WHERE IsActive = 1
-ORDER BY Frequency, ScheduledStartTime;
-GO
-
--- View all inactive jobs
-SELECT JobName, Frequency, ScheduledStartTime
-FROM ProdDUTASJobSchedule.dbo.JobControl
-WHERE IsActive = 0
-ORDER BY Frequency;
-GO
-
--- Find weekly/monthly jobs
-SELECT JobName, Frequency, ScheduledStartTime
-FROM ProdDUTASJobSchedule.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) = 'PROD_MONTHLY_DTSCHGVR';
-SELECT JobName, PredecessorJobName
-FROM ProdDUTASJobSchedule.dbo.JobDependencies
-WHERE JobName = @Job;
-GO
-
--- Show dependency chain overview
-SELECT d.JobName, d.PredecessorJobName, jc.ScheduledStartTime, jc.Frequency
-FROM ProdDUTASJobSchedule.dbo.JobDependencies d
-JOIN ProdDUTASJobSchedule.dbo.JobControl jc ON d.JobName = jc.JobName
-ORDER BY jc.Frequency, jc.ScheduledStartTime;
-GO
diff --git a/SQLAgent/03_Prod/3_Job_Maintenance/SQLAgentInfo.sql b/SQLAgent/03_Prod/3_Job_Maintenance/SQLAgentInfo.sql
deleted file mode 100644
index d63458e..0000000
--- a/SQLAgent/03_Prod/3_Job_Maintenance/SQLAgentInfo.sql
+++ /dev/null
@@ -1,42 +0,0 @@
-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
\ No newline at end of file
diff --git a/SQLAgent/03_Prod/3_Job_Maintenance/TodaysExecution.sql b/SQLAgent/03_Prod/3_Job_Maintenance/TodaysExecution.sql
deleted file mode 100644
index e116c74..0000000
--- a/SQLAgent/03_Prod/3_Job_Maintenance/TodaysExecution.sql
+++ /dev/null
@@ -1,21 +0,0 @@
-USE ProdDUTASJobSchedule;
-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;
diff --git a/SQLAgent/03_Prod/3_Job_Maintenance/TriggerMissedJob.sql b/SQLAgent/03_Prod/3_Job_Maintenance/TriggerMissedJob.sql
deleted file mode 100644
index 950d722..0000000
--- a/SQLAgent/03_Prod/3_Job_Maintenance/TriggerMissedJob.sql
+++ /dev/null
@@ -1,9 +0,0 @@
-USE [ProdDUTASJobSchedule]
-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;
-
diff --git a/SQLAgent/03_Prod/3_Stored_Procedures/usp_CheckJobConditions.sql b/SQLAgent/03_Prod/3_Stored_Procedures/usp_CheckJobConditions.sql
deleted file mode 100644
index 60e8414..0000000
Binary files a/SQLAgent/03_Prod/3_Stored_Procedures/usp_CheckJobConditions.sql and /dev/null differ
diff --git a/SQLAgent/03_Prod/3_Stored_Procedures/usp_CheckJobConditions_Generic.sql b/SQLAgent/03_Prod/3_Stored_Procedures/usp_CheckJobConditions_Generic.sql
deleted file mode 100644
index c0ef0d1..0000000
Binary files a/SQLAgent/03_Prod/3_Stored_Procedures/usp_CheckJobConditions_Generic.sql and /dev/null differ
diff --git a/SQLAgent/03_Prod/3_Stored_Procedures/usp_CreateDailyJobSchedule.sql b/SQLAgent/03_Prod/3_Stored_Procedures/usp_CreateDailyJobSchedule.sql
deleted file mode 100644
index c2cd1ea..0000000
--- a/SQLAgent/03_Prod/3_Stored_Procedures/usp_CreateDailyJobSchedule.sql
+++ /dev/null
@@ -1,98 +0,0 @@
-USE msdb;
-GO
-
-CREATE OR ALTER PROCEDURE dbo.usp_CreateDailyJobSchedule
- @Env VARCHAR(10) = 'DEVL' -- Added parameter with default value
-AS
-BEGIN
- SET NOCOUNT ON;
-
- DECLARE
- @JobID INT,
- @JobName SYSNAME,
- @ScheduledStartTime TIME(0),
- @Frequency NVARCHAR(20),
- @FrequencyPattern NVARCHAR(MAX),
- @ScheduleName SYSNAME,
- @StartTimeInt INT,
- @FreqInterval INT,
- @TimeString VARCHAR(8),
- @ActiveStartDate INT,
- @dbName SYSNAME; -- Added variable for database name
-
- -- Determine database name based on environment
- SET @dbName = CASE @Env
- WHEN 'DEVL' THEN 'DevlDUTASJobSchedule'
- WHEN 'TEST' THEN 'TestDUTASJobSchedule'
- WHEN 'PROD' THEN 'ProdDUTASJobSchedule'
- END;
-
- -- Prepare active start date as INT (YYYYMMDD)
- SET @ActiveStartDate = CONVERT(INT, CONVERT(CHAR(8), GETDATE(), 112));
-
- -- Dynamic SQL to fetch jobs from the appropriate database
- DECLARE @Sql NVARCHAR(MAX);
- SET @Sql = N'
- DECLARE job_cursor CURSOR FOR
- SELECT JobID, JobName, ScheduledStartTime, Frequency, FrequencyPattern
- FROM ' + QUOTENAME(@dbName) + N'.dbo.JobControl
- WHERE UPPER(Frequency) = ''DAILY''
- AND IsActive = 1;';
-
- -- Execute dynamic SQL to declare cursor
- EXEC sp_executesql @Sql;
-
- OPEN job_cursor;
- FETCH NEXT FROM job_cursor INTO @JobID, @JobName, @ScheduledStartTime, @Frequency, @FrequencyPattern;
-
- WHILE @@FETCH_STATUS = 0
- BEGIN
- -- Step 1: Convert ScheduledStartTime (TIME) to HH:MM:SS string
- SET @TimeString = CONVERT(VARCHAR(8), @ScheduledStartTime, 108);
-
- -- Step 2: Remove colons and convert to INT (HHMMSS)
- SET @StartTimeInt = CONVERT(INT, REPLACE(@TimeString, ':', ''));
-
- -- Step 3: Prepare schedule name
- SET @ScheduleName = CONCAT(@JobName, '_DailySchedule');
-
- -- Step 4: Fixed freq_interval for Monday to Friday
- SET @FreqInterval = 62; -- Mon(2)+Tue(4)+Wed(8)+Thu(16)+Fri(32) = 62
-
- -- Step 5: Delete existing schedule if it exists (idempotency)
- IF EXISTS (
- SELECT 1
- FROM msdb.dbo.sysschedules s
- JOIN msdb.dbo.sysjobschedules js ON s.schedule_id = js.schedule_id
- JOIN msdb.dbo.sysjobs j ON j.job_id = js.job_id
- WHERE j.name = @JobName AND s.name = @ScheduleName
- )
- BEGIN
- EXEC msdb.dbo.sp_delete_schedule @schedule_name = @ScheduleName;
- END
-
- -- Step 6: Create weekly schedule (Monday to Friday) running once per day
- EXEC msdb.dbo.sp_add_schedule
- @schedule_name = @ScheduleName,
- @enabled = 1,
- @freq_type = 8, -- weekly
- @freq_interval = @FreqInterval,
- @freq_recurrence_factor = 1, -- every week
- @active_start_time = @StartTimeInt,
- @active_start_date = @ActiveStartDate;
-
- -- Step 7: Attach schedule to job
- EXEC msdb.dbo.sp_attach_schedule
- @job_name = @JobName,
- @schedule_name = @ScheduleName;
-
- -- Fetch next job
- FETCH NEXT FROM job_cursor INTO @JobID, @JobName, @ScheduledStartTime, @Frequency, @FrequencyPattern;
- END
-
- CLOSE job_cursor;
- DEALLOCATE job_cursor;
-
- PRINT 'Daily job schedules (Monday to Friday) created successfully for ' + @dbName;
-END;
-GO
\ No newline at end of file
diff --git a/SQLAgent/03_Prod/3_Stored_Procedures/usp_CreateSQLAgentJob.sql b/SQLAgent/03_Prod/3_Stored_Procedures/usp_CreateSQLAgentJob.sql
deleted file mode 100644
index cfba9e9..0000000
Binary files a/SQLAgent/03_Prod/3_Stored_Procedures/usp_CreateSQLAgentJob.sql and /dev/null differ
diff --git a/SQLAgent/03_Prod/3_Stored_Procedures/usp_CreateWeeklySchedules.sql b/SQLAgent/03_Prod/3_Stored_Procedures/usp_CreateWeeklySchedules.sql
deleted file mode 100644
index 2021821..0000000
--- a/SQLAgent/03_Prod/3_Stored_Procedures/usp_CreateWeeklySchedules.sql
+++ /dev/null
@@ -1,223 +0,0 @@
-USE [msdb];
-GO
-
-CREATE OR ALTER PROCEDURE dbo.usp_CreateWeeklySchedules
- @Env VARCHAR(10) = 'DEVL' -- Added parameter with default value
-AS
-BEGIN
- SET NOCOUNT ON;
-
- DECLARE
- @JobName SYSNAME,
- @FrequencyPattern NVARCHAR(MAX),
- @StartTime VARCHAR(50),
- @ScheduleName SYSNAME,
- @StartTimeInt INT,
- @FreqInterval INT,
- @ActiveDate INT,
- @computedFreq INT,
- @dbName SYSNAME; -- Added variable for database name
-
- -- Determine database name based on environment
- SET @dbName = CASE @Env
- WHEN 'DEVL' THEN 'DevlDUTASJobSchedule'
- WHEN 'TEST' THEN 'TestDUTASJobSchedule'
- WHEN 'PROD' THEN 'ProdDUTASJobSchedule'
- END;
-
- SET @ActiveDate = CONVERT(INT, CONVERT(CHAR(8), GETDATE(), 112));
-
- --------------------------------------------------------------------------
- -- Dynamic SQL for cursor to fetch active weekly jobs from appropriate database
- --------------------------------------------------------------------------
- DECLARE @Sql NVARCHAR(MAX);
- SET @Sql = N'
- DECLARE job_cursor CURSOR FAST_FORWARD FOR
- SELECT
- JobName,
- FrequencyPattern,
- ScheduledStartTime
- FROM ' + QUOTENAME(@dbName) + N'.dbo.JobControl
- WHERE UPPER(Frequency) = ''WEEKLY''
- AND IsActive = 1;';
-
- -- Execute dynamic SQL to declare cursor
- EXEC sp_executesql @Sql;
-
- OPEN job_cursor;
- FETCH NEXT FROM job_cursor INTO @JobName, @FrequencyPattern, @StartTime;
-
- WHILE @@FETCH_STATUS = 0
- BEGIN
- BEGIN TRY
- ------------------------------------------------------------------
- -- Reset per-job variables
- ------------------------------------------------------------------
- SET @FreqInterval = 0;
- SET @computedFreq = 0;
- SET @StartTimeInt = NULL;
- SET @ScheduleName = NULL;
-
- ------------------------------------------------------------------
- -- Correctly format the start time (HHMMSS without extra zeros)
- ------------------------------------------------------------------
- SET @StartTime = LTRIM(RTRIM(ISNULL(@StartTime, '00:00:00')));
-
- -- Parse time and convert to HHMMSS integer
- DECLARE @TimeParts TABLE (part NVARCHAR(10), idx INT);
- INSERT INTO @TimeParts (part, idx)
- SELECT value, ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) - 1
- FROM STRING_SPLIT(LEFT(@StartTime, 8), ':');
-
- DECLARE @Hours INT, @Minutes INT, @Seconds INT;
-
- SELECT @Hours = CAST(part AS INT) FROM @TimeParts WHERE idx = 0;
- SELECT @Minutes = CAST(part AS INT) FROM @TimeParts WHERE idx = 1;
- SELECT @Seconds = CAST(part AS INT) FROM @TimeParts WHERE idx = 2;
-
- -- Ensure valid time ranges
- SET @Hours = ISNULL(@Hours, 0);
- SET @Minutes = ISNULL(@Minutes, 0);
- SET @Seconds = ISNULL(@Seconds, 0);
-
- IF @Hours < 0 OR @Hours > 23 SET @Hours = 0;
- IF @Minutes < 0 OR @Minutes > 59 SET @Minutes = 0;
- IF @Seconds < 0 OR @Seconds > 59 SET @Seconds = 0;
-
- SET @StartTimeInt = (@Hours * 10000) + (@Minutes * 100) + @Seconds;
-
- SET @ScheduleName = CONCAT(@JobName, '_WeeklySchedule');
-
- ------------------------------------------------------------------
- -- Parse JSON days using a local temporary table
- ------------------------------------------------------------------
- CREATE TABLE #Days (DayName NVARCHAR(10));
-
- INSERT INTO #Days (DayName)
- SELECT TRIM(value)
- FROM OPENJSON(ISNULL(@FrequencyPattern, '{}'), '$.Days');
-
- ------------------------------------------------------------------
- -- Compute bitmask correctly (values should be 1-127)
- ------------------------------------------------------------------
- SELECT @computedFreq = ISNULL(SUM(
- CASE UPPER(DayName)
- WHEN 'SUN' THEN 1
- WHEN 'MON' THEN 2
- WHEN 'TUE' THEN 4
- WHEN 'WED' THEN 8
- WHEN 'THU' THEN 16
- WHEN 'FRI' THEN 32
- WHEN 'SAT' THEN 64
- ELSE 0
- END
- ), 0)
- FROM #Days;
-
- DROP TABLE #Days; -- Explicitly drop the temp table
-
- SET @FreqInterval = ISNULL(@computedFreq, 0);
-
- ------------------------------------------------------------------
- -- Validate freq_interval (must be 1..127)
- ------------------------------------------------------------------
- IF @FreqInterval < 1 OR @FreqInterval > 127
- BEGIN
- PRINT 'Warning: Weekly job ' + @JobName +
- ' has invalid freq_interval (' + ISNULL(CAST(@FreqInterval AS VARCHAR(10)), 'NULL') +
- '). Days found: ' + ISNULL(@FrequencyPattern, 'None') + '. Skipping.';
- FETCH NEXT FROM job_cursor INTO @JobName, @FrequencyPattern, @StartTime;
- CONTINUE;
- END
-
- ------------------------------------------------------------------
- -- Debug output to verify calculations
- ------------------------------------------------------------------
- PRINT 'Job: ' + @JobName +
- ', Days: ' + @FrequencyPattern +
- ', FreqInterval: ' + CAST(@FreqInterval AS VARCHAR(3)) +
- ', StartTime: ' + CAST(@StartTimeInt AS VARCHAR(6));
-
- ------------------------------------------------------------------
- -- Safely detach and delete any existing schedule with this name
- -- Use TRY/CATCH for schedule operations since non-existence is expected
- ------------------------------------------------------------------
- BEGIN TRY
- DECLARE @schedule_id INT;
- DECLARE @attach_count INT;
-
- -- Check if schedule exists and get its ID
- SELECT @schedule_id = s.schedule_id
- FROM msdb.dbo.sysschedules s
- JOIN msdb.dbo.sysjobschedules js ON s.schedule_id = js.schedule_id
- JOIN msdb.dbo.sysjobs j ON j.job_id = js.job_id
- WHERE j.name = @JobName AND s.name = @ScheduleName;
-
- IF @schedule_id IS NOT NULL
- BEGIN
- -- Detach from this job (if attached)
- EXEC msdb.dbo.sp_detach_schedule
- @job_name = @JobName,
- @schedule_name = @ScheduleName;
-
- -- Check if schedule still attached to other jobs
- SELECT @attach_count = COUNT(*)
- FROM msdb.dbo.sysjobschedules js
- WHERE js.schedule_id = @schedule_id;
-
- IF @attach_count = 0
- BEGIN
- EXEC msdb.dbo.sp_delete_schedule
- @schedule_name = @ScheduleName;
- PRINT 'Existing schedule deleted: ' + @ScheduleName;
- END
- ELSE
- BEGIN
- PRINT 'Notice: schedule ' + @ScheduleName + ' could not be deleted because it is still attached to other jobs.';
- END
- END
- END TRY
- BEGIN CATCH
- -- Schedule operations might fail if schedule doesn't exist, which is fine
- PRINT 'Notice: ' + ERROR_MESSAGE() + ' - proceeding with new schedule creation.';
- END CATCH
-
- ------------------------------------------------------------------
- -- Create the unified weekly schedule with subday config
- ------------------------------------------------------------------
- EXEC msdb.dbo.sp_add_schedule
- @schedule_name = @ScheduleName,
- @enabled = 1,
- @freq_type = 8, -- Weekly
- @freq_interval = @FreqInterval, -- Bitmask of weekdays
- @freq_recurrence_factor = 1, -- Every week
- @freq_subday_type = 1, -- Once per day
- @freq_subday_interval = 1,
- @active_start_time = @StartTimeInt,
- @active_start_date = @ActiveDate;
-
- ------------------------------------------------------------------
- -- Attach the schedule to the job
- ------------------------------------------------------------------
- EXEC msdb.dbo.sp_attach_schedule
- @job_name = @JobName,
- @schedule_name = @ScheduleName;
-
- PRINT 'Weekly schedule created for job: ' + @JobName +
- ' (Days=' + CAST(@FreqInterval AS VARCHAR(10)) +
- ', Time=' + RIGHT('000000' + CAST(@StartTimeInt AS VARCHAR(6)), 6) + ')';
-
- END TRY
- BEGIN CATCH
- PRINT 'Error scheduling job ' + ISNULL(@JobName, 'Unknown') + ': ' + ERROR_MESSAGE();
- END CATCH;
-
- FETCH NEXT FROM job_cursor INTO @JobName, @FrequencyPattern, @StartTime;
- END
-
- CLOSE job_cursor;
- DEALLOCATE job_cursor;
-
- PRINT 'All weekly job schedules processed for ' + @dbName;
-END;
-GO
\ No newline at end of file
diff --git a/SQLAgent/03_Prod/3_Stored_Procedures/usp_ForceComplete.sql b/SQLAgent/03_Prod/3_Stored_Procedures/usp_ForceComplete.sql
deleted file mode 100644
index cbd4142..0000000
Binary files a/SQLAgent/03_Prod/3_Stored_Procedures/usp_ForceComplete.sql and /dev/null differ
diff --git a/SQLAgent/03_Prod/3_Stored_Procedures/usp_GenerateJobSchedule.sql b/SQLAgent/03_Prod/3_Stored_Procedures/usp_GenerateJobSchedule.sql
deleted file mode 100644
index b15cd55..0000000
--- a/SQLAgent/03_Prod/3_Stored_Procedures/usp_GenerateJobSchedule.sql
+++ /dev/null
@@ -1,261 +0,0 @@
-USE [ProdDUTASJobSchedule];
-GO
-
-CREATE OR ALTER PROCEDURE dbo.usp_GenerateJobSchedule
- @Year INT
-AS
-BEGIN
- SET NOCOUNT ON;
-
- -------------------------------------------------------------------------
- -- 1. Cleanup existing schedule data for this year
- -------------------------------------------------------------------------
- DELETE FROM dbo.JobSchedule WHERE YearOfSchedule = @Year;
-
- -------------------------------------------------------------------------
- -- 2. Variable declarations
- -------------------------------------------------------------------------
- DECLARE
- @JobName VARCHAR(100),
- @Frequency VARCHAR(20),
- @Pattern NVARCHAR(2000),
- @ScheduledTime TIME,
- @RuleName NVARCHAR(100),
- @Month INT,
- @BaseDate DATE,
- @ScheduledDate DATE,
- @AdjustedDate DATE,
- @FailSafeDate DATE = '9999-12-31';
-
- -------------------------------------------------------------------------
- -- 3. Temporary table to process jobs more efficiently
- -------------------------------------------------------------------------
- CREATE TABLE #JobProcessing (
- JobName VARCHAR(100),
- Frequency VARCHAR(20),
- Pattern NVARCHAR(2000),
- ScheduledTime TIME,
- RuleName NVARCHAR(100),
- MonthsJSON NVARCHAR(MAX),
- DayNum INT,
- HasExplicitSchedule BIT
- );
-
- -- Populate temporary table with parsed JSON data
- INSERT INTO #JobProcessing (JobName, Frequency, Pattern, ScheduledTime, RuleName, MonthsJSON, DayNum, HasExplicitSchedule)
- SELECT
- jc.JobName,
- jc.Frequency,
- jc.FrequencyPattern,
- jc.ScheduledStartTime,
- JSON_VALUE(jc.FrequencyPattern, '$.Rule'),
- JSON_QUERY(jc.FrequencyPattern, '$.Months'),
- JSON_VALUE(jc.FrequencyPattern, '$.Day'),
- CASE WHEN JSON_QUERY(jc.FrequencyPattern, '$.Schedule') IS NOT NULL THEN 1 ELSE 0 END
- FROM dbo.JobControl jc
- WHERE UPPER(jc.Frequency) IN ('MONTHLY','QUARTERLY')
- AND jc.IsActive = 1;
-
- -------------------------------------------------------------------------
- -- 4. Process MONTHLY jobs
- -------------------------------------------------------------------------
- INSERT INTO dbo.JobSchedule (JobName, Frequency, ScheduledRule, ScheduledDate, AdjustedRunDate, MonthOfSchedule, YearOfSchedule, CreatedOn, CreatedBy)
- SELECT
- jp.JobName,
- jp.Frequency,
- jp.Pattern,
- CASE
- WHEN jp.RuleName = 'FirstWorkday' THEN dbo.fn_GetNextWorkday(DATEFROMPARTS(@Year, m.MonthNum, 1))
- WHEN jp.RuleName = 'LastWorkday' THEN dbo.fn_GetPreviousWorkday(EOMONTH(DATEFROMPARTS(@Year, m.MonthNum, 1)))
- ELSE @FailSafeDate
- END AS ScheduledDate,
- CASE
- WHEN jp.RuleName = 'FirstWorkday' THEN dbo.fn_GetNextWorkday(DATEFROMPARTS(@Year, m.MonthNum, 1))
- WHEN jp.RuleName = 'LastWorkday' THEN dbo.fn_GetPreviousWorkday(EOMONTH(DATEFROMPARTS(@Year, m.MonthNum, 1)))
- ELSE @FailSafeDate
- END AS AdjustedRunDate,
- FORMAT(DATEFROMPARTS(@Year, m.MonthNum, 1), 'yyyy-MM'),
- @Year,
- GETDATE(),
- SYSTEM_USER
- FROM #JobProcessing jp
- CROSS JOIN (VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)) m(MonthNum)
- WHERE jp.Frequency = 'MONTHLY'
- AND jp.RuleName IN ('FirstWorkday', 'LastWorkday');
-
- -- Handle monthly jobs with unknown rules
- INSERT INTO dbo.JobSchedule (JobName, Frequency, ScheduledRule, ScheduledDate, AdjustedRunDate, MonthOfSchedule, YearOfSchedule, CreatedOn, CreatedBy)
- SELECT
- jp.JobName,
- jp.Frequency,
- jp.Pattern,
- @FailSafeDate,
- @FailSafeDate,
- FORMAT(DATEFROMPARTS(@Year, m.MonthNum, 1), 'yyyy-MM'),
- @Year,
- GETDATE(),
- SYSTEM_USER
- FROM #JobProcessing jp
- CROSS JOIN (VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)) m(MonthNum)
- WHERE jp.Frequency = 'MONTHLY'
- AND jp.RuleName NOT IN ('FirstWorkday', 'LastWorkday');
-
- -------------------------------------------------------------------------
- -- 5. Process QUARTERLY jobs - FirstWorkdayOfQuarter
- -------------------------------------------------------------------------
- INSERT INTO dbo.JobSchedule (JobName, Frequency, ScheduledRule, ScheduledDate, AdjustedRunDate, MonthOfSchedule, YearOfSchedule, CreatedOn, CreatedBy)
- SELECT
- jp.JobName,
- jp.Frequency,
- jp.Pattern,
- dbo.fn_GetNextWorkday(DATEFROMPARTS(@Year, q.StartMonth, 1)),
- dbo.fn_GetNextWorkday(DATEFROMPARTS(@Year, q.StartMonth, 1)),
- FORMAT(DATEFROMPARTS(@Year, q.StartMonth, 1), 'yyyy-MM'),
- @Year,
- GETDATE(),
- SYSTEM_USER
- FROM #JobProcessing jp
- CROSS JOIN (VALUES (1),(4),(7),(10)) q(StartMonth)
- WHERE jp.Frequency = 'QUARTERLY'
- AND jp.RuleName = 'FirstWorkdayOfQuarter';
-
- -------------------------------------------------------------------------
- -- 6. Process QUARTERLY jobs - Months array with Day number
- -------------------------------------------------------------------------
- ;WITH QuarterlyMonths AS (
- SELECT
- jp.JobName,
- jp.Frequency,
- jp.Pattern,
- CAST(m.[value] AS INT) AS MonthNum,
- jp.DayNum
- FROM #JobProcessing jp
- CROSS APPLY OPENJSON(jp.MonthsJSON) m
- WHERE jp.Frequency = 'QUARTERLY'
- AND jp.MonthsJSON IS NOT NULL
- AND jp.DayNum IS NOT NULL
- AND jp.RuleName IS NULL
- AND jp.HasExplicitSchedule = 0
- ),
- QuarterlyDates AS (
- SELECT
- qm.JobName,
- qm.Frequency,
- qm.Pattern,
- qm.MonthNum,
- qm.DayNum,
- CASE
- WHEN qm.DayNum <= DAY(EOMONTH(DATEFROMPARTS(@Year, qm.MonthNum, 1)))
- THEN DATEFROMPARTS(@Year, qm.MonthNum, qm.DayNum)
- ELSE EOMONTH(DATEFROMPARTS(@Year, qm.MonthNum, 1))
- END AS BaseDate
- FROM QuarterlyMonths qm
- )
- INSERT INTO dbo.JobSchedule (JobName, Frequency, ScheduledRule, ScheduledDate, AdjustedRunDate, MonthOfSchedule, YearOfSchedule, CreatedOn, CreatedBy)
- SELECT
- qd.JobName,
- qd.Frequency,
- qd.Pattern,
- qd.BaseDate,
- CASE
- WHEN DATENAME(WEEKDAY, qd.BaseDate) IN ('Saturday','Sunday')
- OR EXISTS (SELECT 1 FROM dbo.FederalHolidays WHERE HolidayDate = qd.BaseDate)
- THEN dbo.fn_GetPreviousWorkday(qd.BaseDate)
- ELSE qd.BaseDate
- END AS AdjustedRunDate,
- FORMAT(qd.BaseDate, 'yyyy-MM'),
- @Year,
- GETDATE(),
- SYSTEM_USER
- FROM QuarterlyDates qd;
-
- -------------------------------------------------------------------------
- -- 7. Process QUARTERLY jobs - Explicit Schedule array
- -------------------------------------------------------------------------
- ;WITH ExplicitSchedules AS (
- SELECT
- jp.JobName,
- jp.Frequency,
- jp.Pattern,
- s.[Month] AS MonthNum,
- s.[Day] AS DayNum
- FROM #JobProcessing jp
- CROSS APPLY OPENJSON(jp.Pattern, '$.Schedule')
- WITH (
- [Month] INT '$.Month',
- [Day] INT '$.Day'
- ) s
- WHERE jp.Frequency = 'QUARTERLY'
- AND jp.HasExplicitSchedule = 1
- ),
- ExplicitScheduleDates AS (
- SELECT
- es.JobName,
- es.Frequency,
- es.Pattern,
- es.MonthNum,
- es.DayNum,
- CASE
- WHEN es.DayNum <= DAY(EOMONTH(DATEFROMPARTS(@Year, es.MonthNum, 1)))
- THEN DATEFROMPARTS(@Year, es.MonthNum, es.DayNum)
- ELSE EOMONTH(DATEFROMPARTS(@Year, es.MonthNum, 1))
- END AS BaseDate
- FROM ExplicitSchedules es
- )
- INSERT INTO dbo.JobSchedule (JobName, Frequency, ScheduledRule, ScheduledDate, AdjustedRunDate, MonthOfSchedule, YearOfSchedule, CreatedOn, CreatedBy)
- SELECT
- esd.JobName,
- esd.Frequency,
- esd.Pattern,
- esd.BaseDate,
- CASE
- WHEN DATENAME(WEEKDAY, esd.BaseDate) IN ('Saturday','Sunday')
- OR EXISTS (SELECT 1 FROM dbo.FederalHolidays WHERE HolidayDate = esd.BaseDate)
- THEN dbo.fn_GetPreviousWorkday(esd.BaseDate)
- ELSE esd.BaseDate
- END AS AdjustedRunDate,
- FORMAT(esd.BaseDate, 'yyyy-MM'),
- @Year,
- GETDATE(),
- SYSTEM_USER
- FROM ExplicitScheduleDates esd;
-
- -------------------------------------------------------------------------
- -- 8. Handle any quarterly jobs that didn't match the patterns above
- -------------------------------------------------------------------------
- INSERT INTO dbo.JobSchedule (JobName, Frequency, ScheduledRule, ScheduledDate, AdjustedRunDate, MonthOfSchedule, YearOfSchedule, CreatedOn, CreatedBy)
- SELECT
- jp.JobName,
- jp.Frequency,
- jp.Pattern,
- @FailSafeDate,
- @FailSafeDate,
- FORMAT(DATEFROMPARTS(@Year, 1, 1), 'yyyy-MM'),
- @Year,
- GETDATE(),
- SYSTEM_USER
- FROM #JobProcessing jp
- WHERE jp.Frequency = 'QUARTERLY'
- AND NOT EXISTS (
- SELECT 1 FROM dbo.JobSchedule js
- WHERE js.JobName = jp.JobName AND js.YearOfSchedule = @Year
- );
-
- -------------------------------------------------------------------------
- -- 9. Cleanup and output
- -------------------------------------------------------------------------
- DROP TABLE #JobProcessing;
-
- -- Update any NULL dates to fail-safe date
- UPDATE dbo.JobSchedule
- SET ScheduledDate = @FailSafeDate,
- AdjustedRunDate = @FailSafeDate
- WHERE YearOfSchedule = @Year
- AND (ScheduledDate IS NULL OR AdjustedRunDate IS NULL);
-
- DECLARE @RecordCount INT = (SELECT COUNT(*) FROM dbo.JobSchedule WHERE YearOfSchedule = @Year);
-
- PRINT 'Job schedule generation completed for year ' + CAST(@Year AS VARCHAR(4)) +
- '. Total records created: ' + CAST(@RecordCount AS VARCHAR(10));
-END;
-GO
\ No newline at end of file
diff --git a/SQLAgent/03_Prod/3_Stored_Procedures/usp_ScheduleJob.sql b/SQLAgent/03_Prod/3_Stored_Procedures/usp_ScheduleJob.sql
deleted file mode 100644
index f6c2ffa..0000000
--- a/SQLAgent/03_Prod/3_Stored_Procedures/usp_ScheduleJob.sql
+++ /dev/null
@@ -1,160 +0,0 @@
-USE [msdb]
-GO
-
-/****** Object: StoredProcedure [dbo].[usp_ScheduleJob] Script Date: 10/18/2025 9:52:04 AM ******/
-SET ANSI_NULLS ON
-GO
-
-SET QUOTED_IDENTIFIER ON
-GO
-
-
-CREATE OR ALTER PROCEDURE [dbo].[usp_ScheduleJob]
- @JobName NVARCHAR(100),
- @Env CHAR(4), -- 'DEVL' | 'TEST' | 'PROD'
- @RunDate DATE,
- @RunTime TIME
-AS
-BEGIN
- SET NOCOUNT ON;
-
- DECLARE
- @JobId UNIQUEIDENTIFIER,
- @ScheduleName NVARCHAR(200),
- @dbName NVARCHAR(128),
- @ActiveStartDate INT,
- @ActiveStartTime INT,
- @Sql NVARCHAR(MAX),
- @JobExists BIT = 0,
- @ScheduleId INT;
-
- -- Table variable must be declared separately and at the top level
- DECLARE @ExistingSchedules TABLE (
- schedule_id INT,
- schedule_name NVARCHAR(200)
- );
-
- -- Map environment to actual DB name
- SET @dbName = CASE @Env
- WHEN 'DEVL' THEN 'DevlDUTASJobSchedule'
- WHEN 'TEST' THEN 'TestDUTASJobSchedule'
- WHEN 'PROD' THEN 'ProdDUTASJobSchedule'
- ELSE 'DevlDUTASJobSchedule'
- END;
-
- -- Validate parameters
- IF @Env NOT IN ('DEVL','TEST','PROD')
- BEGIN
- RAISERROR('Env must be one of: DEVL, TEST, PROD.', 16, 1);
- RETURN;
- END
-
- IF @RunDate < CAST(GETDATE() AS DATE)
- BEGIN
- RAISERROR('RunDate cannot be in the past.', 16, 1);
- RETURN;
- END;
-
- -- Check if job exists in JobControl table
- SET @Sql = N'SELECT @JobExists = 1 FROM ' + QUOTENAME(@dbName) + '.dbo.JobControl WHERE JobName = @JobNameParam';
-
- EXEC sp_executesql @Sql,
- N'@JobNameParam NVARCHAR(100), @JobExists BIT OUTPUT',
- @JobNameParam = @JobName,
- @JobExists = @JobExists OUTPUT;
-
- IF @JobExists = 0
- BEGIN
- RAISERROR('Job %s not found in JobControl table.', 16, 1, @JobName);
- RETURN;
- END;
-
- -- Activate job in control table
- SET @Sql = N'UPDATE ' + QUOTENAME(@dbName) + '.dbo.JobControl SET IsActive = 1 WHERE JobName = @JobNameParam';
- EXEC sp_executesql @Sql,
- N'@JobNameParam NVARCHAR(100)',
- @JobNameParam = @JobName;
-
- PRINT 'Job activated in JobControl.';
-
- -- Convert date/time to SQL Agent format
- SET @ActiveStartDate = CONVERT(INT, CONVERT(CHAR(8), @RunDate, 112));
- SET @ActiveStartTime = DATEPART(HOUR, @RunTime) * 10000 +
- DATEPART(MINUTE, @RunTime) * 100 +
- DATEPART(SECOND, @RunTime);
-
- SET @ScheduleName = @JobName + '_MonthlySchedule';
-
- -- Get job id
- SELECT @JobId = job_id
- FROM msdb.dbo.sysjobs
- WHERE name = @JobName;
-
- IF @JobId IS NULL
- BEGIN
- RAISERROR('SQL Agent job "%s" not found.', 16, 1, @JobName);
- RETURN;
- END;
-
- BEGIN TRY
- BEGIN TRANSACTION;
-
- -- Detach and delete all existing schedules for this job
- INSERT INTO @ExistingSchedules (schedule_id, schedule_name)
- SELECT s.schedule_id, s.name
- FROM msdb.dbo.sysschedules AS s
- INNER JOIN msdb.dbo.sysjobschedules AS js ON s.schedule_id = js.schedule_id
- WHERE js.job_id = @JobId;
-
- DECLARE @OldScheduleId INT, @OldScheduleName NVARCHAR(200);
-
- DECLARE cur CURSOR LOCAL FAST_FORWARD FOR
- SELECT schedule_id, schedule_name FROM @ExistingSchedules;
-
- OPEN cur;
- FETCH NEXT FROM cur INTO @OldScheduleId, @OldScheduleName;
-
- WHILE @@FETCH_STATUS = 0
- BEGIN
- PRINT 'Detaching old schedule: ' + @OldScheduleName;
- EXEC msdb.dbo.sp_detach_schedule @job_id = @JobId, @schedule_name = @OldScheduleName;
-
- PRINT 'Deleting old schedule: ' + @OldScheduleName;
- EXEC msdb.dbo.sp_delete_schedule @schedule_name = @OldScheduleName;
-
- FETCH NEXT FROM cur INTO @OldScheduleId, @OldScheduleName;
- END
-
- CLOSE cur;
- DEALLOCATE cur;
-
- -- Create new one-time schedule
- EXEC msdb.dbo.sp_add_schedule
- @schedule_name = @ScheduleName,
- @enabled = 1,
- @freq_type = 1, -- One-time
- @active_start_date = @ActiveStartDate,
- @active_start_time = @ActiveStartTime;
-
- -- Attach schedule to job
- EXEC msdb.dbo.sp_attach_schedule
- @job_id = @JobId,
- @schedule_name = @ScheduleName;
-
- COMMIT TRANSACTION;
-
- PRINT 'New schedule created for job "' + @JobName +
- '" on ' + CONVERT(VARCHAR(10), @RunDate, 120) +
- ' at ' + CONVERT(VARCHAR(8), @RunTime, 108);
- END TRY
- BEGIN CATCH
- IF @@TRANCOUNT > 0
- ROLLBACK TRANSACTION;
-
- DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE();
- RAISERROR('Error creating schedule: %s', 16, 1, @ErrorMessage);
- END CATCH;
-END;
-GO
-
-
diff --git a/SQLAgent/03_Prod/3_Stored_Procedures/usp_ScheduleJobsForMonth.sql b/SQLAgent/03_Prod/3_Stored_Procedures/usp_ScheduleJobsForMonth.sql
deleted file mode 100644
index 0fa2de9..0000000
--- a/SQLAgent/03_Prod/3_Stored_Procedures/usp_ScheduleJobsForMonth.sql
+++ /dev/null
@@ -1,39 +0,0 @@
-USE ProdDUTASJobSchedule;
-GO
-
-CREATE OR ALTER PROCEDURE dbo.usp_ScheduleJobsForMonth
-AS
-BEGIN
- SET NOCOUNT ON;
-
- DECLARE @MonthKey CHAR(7) = FORMAT(GETDATE(), 'yyyy-MM');
- DECLARE @Year INT = YEAR(GETDATE());
- DECLARE @JobName VARCHAR(100);
- DECLARE @RunDate DATE;
- DECLARE @RunTime TIME;
- DECLARE @Env VARCHAR(10) = 'PROD'; -- configurable per environment
-
- DECLARE job_cursor CURSOR FOR
- SELECT js.JobName, js.AdjustedRunDate, jc.ScheduledStartTime
- FROM dbo.JobSchedule js
- INNER JOIN dbo.JobControl jc ON js.JobName = jc.JobName
- WHERE js.MonthOfSchedule = @MonthKey
- AND jc.IsActive = 1;
-
- OPEN job_cursor;
- FETCH NEXT FROM job_cursor INTO @JobName, @RunDate, @RunTime;
-
- WHILE @@FETCH_STATUS = 0
- BEGIN
- EXEC msdb.dbo.usp_ScheduleJob
- @JobName = @JobName,
- @Env = @Env,
- @RunDate = @RunDate,
- @RunTime = @RunTime;
-
- FETCH NEXT FROM job_cursor INTO @JobName, @RunDate, @RunTime;
- END
-
- CLOSE job_cursor;
- DEALLOCATE job_cursor;
-END
diff --git a/SQLAgent/03_Prod/3_Stored_Procedures/usp_TriggerMissedJobs.sql b/SQLAgent/03_Prod/3_Stored_Procedures/usp_TriggerMissedJobs.sql
deleted file mode 100644
index c5fd42f..0000000
Binary files a/SQLAgent/03_Prod/3_Stored_Procedures/usp_TriggerMissedJobs.sql and /dev/null differ
diff --git a/SQLAgent/03_Prod/3_Stored_Procedures/usp_UpdateJobStatus_Generic.sql b/SQLAgent/03_Prod/3_Stored_Procedures/usp_UpdateJobStatus_Generic.sql
deleted file mode 100644
index 20c3f41..0000000
Binary files a/SQLAgent/03_Prod/3_Stored_Procedures/usp_UpdateJobStatus_Generic.sql and /dev/null differ
diff --git a/SQLAgent/03_Prod/4_Job_Maintenance/ActivateOnDemandJob.sql b/SQLAgent/03_Prod/4_Job_Maintenance/ActivateOnDemandJob.sql
deleted file mode 100644
index f745ba3..0000000
--- a/SQLAgent/03_Prod/4_Job_Maintenance/ActivateOnDemandJob.sql
+++ /dev/null
@@ -1,10 +0,0 @@
-USE msdb;
-GO
-
--- Schedule PROD OnDemand Job on 03 Nov at 18:15 PM
-------------------------------------------------
-EXEC dbo.usp_ScheduleJob
- @JobName='PROD_MONTHLY_DTSRQ414',
- @Env='PROD',
- @RunDate='2025-11-03',
- @RunTime='18:15:00';
diff --git a/SQLAgent/03_Prod/4_Job_Maintenance/AddAllJobsToSQLAgent.sql b/SQLAgent/03_Prod/4_Job_Maintenance/AddAllJobsToSQLAgent.sql
deleted file mode 100644
index e7367cd..0000000
--- a/SQLAgent/03_Prod/4_Job_Maintenance/AddAllJobsToSQLAgent.sql
+++ /dev/null
@@ -1,141 +0,0 @@
-USE [msdb]
-GO
-
--- Execute the stored procedure for each job
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSBX215', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSBX305', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSGSID0', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_GSIRQ300', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSRQ202', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSGSID1', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSBX202', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSFT202', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSBX432', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSGACHD', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSBX303', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSGWAGE', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSGCHKS', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSESDAY', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSGPAYT', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSDX145', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSBX629', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSBX630', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSFRAUD', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSRACHD', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSBXACH', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSBXREG', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSBX430', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSBX626', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSBX530', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSBXREL', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSBX450', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSBX451', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSPACHD', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSPX148', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSRQ325', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSBX427', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSPDAY1', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSW4WGE', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSGSID2', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSGSID9', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSMIN01', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSMIN02', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSRQ459', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSBXPFL', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DESBD427', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSBX403', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSBE405', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSBX405', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSRQ335', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSBX601', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_WEEKLY_DTSGSID0', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_WEEKLY_DTSGSID1', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_WEEKLY_DTSBX202', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_WEEKLY_DTSFT202', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_WEEKLY_DTSBX470', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_WEEKLY_DTSBXREJ', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_WEEKLY_DTSPDAY7', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_WEEKLY_DTSBX122', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_WEEKLY_DTSRQ511', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_WEEKLY_DTSRQ444', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_WEEKLY_DTSRQ126', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_MONTHLY_DTSRQ414', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_MONTHLY_DTSPMON1', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_MONTHLY_DTSCHGVB', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_MONTHLY_DTSCHGVR', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_MONTHLY_DTSVBKUP', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_MONTHLY_DTSVRSTR', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_MONTHLY_DTSRQ442', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_MONTHLY_DTSBX460', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_MONTHLY_DTSRQ513', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_MONTHLY_DTSCHGDC', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_QUARTERLY_DTSRQ119', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_QUARTERLY_DTSRQ902', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_QUARTERLY_DTSBX500', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_QUARTERLY_DTSRQ417', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_QUARTERLY_DTSRQ320', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_QUARTERLY_DTSRQ713', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_QUARTERLY_DTSBX468', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_QUARTERLY_DTSCHGQ1', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_QUARTERLY_DTSCHGQ2', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_QUARTERLY_DTSRQ327', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_QUARTERLY_DTSRQ328', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_QUARTERLY_DTSRQ412', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_QUARTERLY_DTSRQ793', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_QUARTERLY_DTSWGE06', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_QUARTERLY_DTSCHGRT', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_QUARTERLY_DTSCHRGS', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_QUARTERLY_DTSRQ540', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_QUARTERLY_DTSRQ591', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_QUARTERLY_DTSRTCHG', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_QUARTERLY_DTSWGE01', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_QUARTERLY_DESBD426', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSACH01', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSBX415', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSBX452', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSBX453', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRQ120', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRQ123', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRQ125', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRQ305', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRQ306', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRQ308', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRQ311', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRQ410', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRQ411', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRQ423', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRQ426', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRQ429', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRQ439', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRQ602', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRQ606', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRQ607', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRQ609', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRQ611', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRQ612', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRQ717', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRQ718', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRQ720', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRQ721', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRT715', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRT716', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRT717', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRT718', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRT719', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRT720', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRT722', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_ONDEMAND_DTSRT723', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_YEARLY_DTSRQ722', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_YEARLY_DTSRQ451', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_YEARLY_DTSRQ127', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_YEARLY_DTSRQ321', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_YEARLY_DTSRQ455', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_YEARLY_DTSRQ500', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_YEARLY_DTSRQ517', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_YEARLY_DTSRQ518', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_YEARLY_DTSRQ616', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_YEARLY_DTSRQ701', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_YEARLY_DTSRQ702', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_YEARLY_DTSRQ704', @Env = 'PROD';
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_YEARLY_DTSRQ910', @Env = 'PROD';
-GO
\ No newline at end of file
diff --git a/SQLAgent/03_Prod/4_Job_Maintenance/AddDailyJobSchedule.sql b/SQLAgent/03_Prod/4_Job_Maintenance/AddDailyJobSchedule.sql
deleted file mode 100644
index b740c61..0000000
--- a/SQLAgent/03_Prod/4_Job_Maintenance/AddDailyJobSchedule.sql
+++ /dev/null
@@ -1 +0,0 @@
-EXEC msdb.dbo.usp_CreateDailyJobSchedule @Env = 'PROD';
\ No newline at end of file
diff --git a/SQLAgent/03_Prod/4_Job_Maintenance/AddNewJobToSQLAgent.sql b/SQLAgent/03_Prod/4_Job_Maintenance/AddNewJobToSQLAgent.sql
deleted file mode 100644
index 345b3b7..0000000
--- a/SQLAgent/03_Prod/4_Job_Maintenance/AddNewJobToSQLAgent.sql
+++ /dev/null
@@ -1,5 +0,0 @@
-USE [msdb]
-GO
-
--- Create a job in SQL Agent (With Standard 3 steps approach)
-EXEC dbo.usp_CreateSQLAgentJob @JobName = 'PROD_DAILY_DTSBX215', @Env = 'PROD';
\ No newline at end of file
diff --git a/SQLAgent/03_Prod/4_Job_Maintenance/AddWeeklyJobSchedule.sql b/SQLAgent/03_Prod/4_Job_Maintenance/AddWeeklyJobSchedule.sql
deleted file mode 100644
index 9608202..0000000
--- a/SQLAgent/03_Prod/4_Job_Maintenance/AddWeeklyJobSchedule.sql
+++ /dev/null
@@ -1 +0,0 @@
-EXEC msdb.dbo.usp_CreateWeeklySchedules @Env = 'PROD';
\ No newline at end of file
diff --git a/SQLAgent/03_Prod/4_Job_Maintenance/DailyJobScheduleLookup.sql b/SQLAgent/03_Prod/4_Job_Maintenance/DailyJobScheduleLookup.sql
deleted file mode 100644
index b893457..0000000
--- a/SQLAgent/03_Prod/4_Job_Maintenance/DailyJobScheduleLookup.sql
+++ /dev/null
@@ -1,86 +0,0 @@
-/********************************************************************************************
- 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:
- • Uses MSDB’s internal schedule definitions (sysschedules, sysjobschedules).
- • Supports One-time, Daily, Weekly, and Monthly schedule types.
- • 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 = 'DEVL'; -- Change for TEST 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
diff --git a/SQLAgent/03_Prod/4_Job_Maintenance/DeactivateJob.sql b/SQLAgent/03_Prod/4_Job_Maintenance/DeactivateJob.sql
deleted file mode 100644
index 57c1e61..0000000
--- a/SQLAgent/03_Prod/4_Job_Maintenance/DeactivateJob.sql
+++ /dev/null
@@ -1,12 +0,0 @@
-USE ProdDUTASJobSchedule;
-GO
-
-UPDATE dbo.JobControl
-SET IsActive = 0
-WHERE Frequency = 'MONTHLY';
-GO
-
--- Optional: Verify changes
-SELECT JobName, Frequency, IsActive
-FROM dbo.JobControl
-WHERE Frequency = 'MONTHLY';
diff --git a/SQLAgent/03_Prod/4_Job_Maintenance/DeleteSchedule.sql b/SQLAgent/03_Prod/4_Job_Maintenance/DeleteSchedule.sql
deleted file mode 100644
index 77de122..0000000
--- a/SQLAgent/03_Prod/4_Job_Maintenance/DeleteSchedule.sql
+++ /dev/null
@@ -1,27 +0,0 @@
-USE msdb;
-GO
-
-DECLARE @EnvPrefix NVARCHAR(50) = N'PROD'; -- <<< Change this to your environment prefix
-DECLARE @schedule_id INT;
-DECLARE @schedule_name NVARCHAR(128);
-
-DECLARE Sched_Cursor CURSOR FOR
-SELECT schedule_id, name
-FROM msdb.dbo.sysschedules
-WHERE name LIKE @EnvPrefix + '%'; -- Only schedules starting with the given prefix
-
-OPEN Sched_Cursor;
-FETCH NEXT FROM Sched_Cursor INTO @schedule_id, @schedule_name;
-
-WHILE @@FETCH_STATUS = 0
-BEGIN
- PRINT 'Deleting schedule: ' + @schedule_name;
- EXEC msdb.dbo.sp_delete_schedule @schedule_id = @schedule_id;
- FETCH NEXT FROM Sched_Cursor INTO @schedule_id, @schedule_name;
-END
-
-CLOSE Sched_Cursor;
-DEALLOCATE Sched_Cursor;
-
-PRINT 'All SQL Agent schedules starting with prefix ' + @EnvPrefix + ' deleted successfully.';
-GO
diff --git a/SQLAgent/03_Prod/4_Job_Maintenance/DetachDeleteScheduleByName.sql b/SQLAgent/03_Prod/4_Job_Maintenance/DetachDeleteScheduleByName.sql
deleted file mode 100644
index c6ddedc..0000000
--- a/SQLAgent/03_Prod/4_Job_Maintenance/DetachDeleteScheduleByName.sql
+++ /dev/null
@@ -1,13 +0,0 @@
--- If you know both the job name and schedule name
-DECLARE @JobName NVARCHAR(100) = 'PROD_MONTHLY_DTSCHGDC';
-DECLARE @ScheduleName NVARCHAR(200) = 'PROD_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;
diff --git a/SQLAgent/03_Prod/4_Job_Maintenance/ForceCompleteJob.sql b/SQLAgent/03_Prod/4_Job_Maintenance/ForceCompleteJob.sql
deleted file mode 100644
index 452037f..0000000
--- a/SQLAgent/03_Prod/4_Job_Maintenance/ForceCompleteJob.sql
+++ /dev/null
@@ -1,16 +0,0 @@
-USE ProdDUTASJobSchedule;
-GO
-
--- 1. Check today's job status
-SELECT JobName, Status, ErrorMessage
-FROM dbo.JobExecutionHistory
-WHERE RunDate = CAST(GETDATE() AS DATE)
-AND JobName = 'PROD_WEEKLY_DTSGSID1';
-
--- 2. Mark DTSBX305 as manually overridden
-EXEC dbo.usp_ForceComplete 'PROD_WEEKLY_DTSGSID1', 'Neeraj.Kumar';
-
--- 3. Verify the override
-SELECT JobName, Status, OverrideBy, OverrideDate
-FROM dbo.JobExecutionHistory
-WHERE JobName = 'PROD_WEEKLY_DTSGSID1' AND RunDate = CAST(GETDATE() AS DATE);
\ No newline at end of file
diff --git a/SQLAgent/03_Prod/4_Job_Maintenance/GenerateJobScheduleTable.sql b/SQLAgent/03_Prod/4_Job_Maintenance/GenerateJobScheduleTable.sql
deleted file mode 100644
index 7a1224f..0000000
--- a/SQLAgent/03_Prod/4_Job_Maintenance/GenerateJobScheduleTable.sql
+++ /dev/null
@@ -1,10 +0,0 @@
-USE ProdDUTASJobSchedule;
-GO
-
--- Set Job Schedule for the Year 2025
-EXEC dbo.usp_GenerateJobSchedule @Year = 2025;
-GO
-
--- Set Job Schedule for the Year 2026
-EXEC dbo.usp_GenerateJobSchedule @Year = 2026;
-GO
\ No newline at end of file
diff --git a/SQLAgent/03_Prod/4_Job_Maintenance/JobInfo.sql b/SQLAgent/03_Prod/4_Job_Maintenance/JobInfo.sql
deleted file mode 100644
index b4a0514..0000000
--- a/SQLAgent/03_Prod/4_Job_Maintenance/JobInfo.sql
+++ /dev/null
@@ -1,47 +0,0 @@
-USE msdb;
-GO
-
-PRINT '================================================================================';
-PRINT 'SECTION 1: JOB CONTROL INFORMATION';
-PRINT '================================================================================';
-GO
-
--- View all active jobs
-SELECT JobName, ScheduledStartTime, Frequency, IsActive
-FROM ProdDUTASJobSchedule.dbo.JobControl
-WHERE IsActive = 1
-ORDER BY Frequency, ScheduledStartTime;
-GO
-
--- View all inactive jobs
-SELECT JobName, Frequency, ScheduledStartTime
-FROM ProdDUTASJobSchedule.dbo.JobControl
-WHERE IsActive = 0
-ORDER BY Frequency;
-GO
-
--- Find weekly/monthly jobs
-SELECT JobName, Frequency, ScheduledStartTime
-FROM ProdDUTASJobSchedule.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) = 'PROD_MONTHLY_DTSCHGVR';
-SELECT JobName, PredecessorJobName
-FROM ProdDUTASJobSchedule.dbo.JobDependencies
-WHERE JobName = @Job;
-GO
-
--- Show dependency chain overview
-SELECT d.JobName, d.PredecessorJobName, jc.ScheduledStartTime, jc.Frequency
-FROM ProdDUTASJobSchedule.dbo.JobDependencies d
-JOIN ProdDUTASJobSchedule.dbo.JobControl jc ON d.JobName = jc.JobName
-ORDER BY jc.Frequency, jc.ScheduledStartTime;
-GO
diff --git a/SQLAgent/03_Prod/4_Job_Maintenance/SQLAgentInfo.sql b/SQLAgent/03_Prod/4_Job_Maintenance/SQLAgentInfo.sql
deleted file mode 100644
index d63458e..0000000
--- a/SQLAgent/03_Prod/4_Job_Maintenance/SQLAgentInfo.sql
+++ /dev/null
@@ -1,42 +0,0 @@
-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
\ No newline at end of file
diff --git a/SQLAgent/03_Prod/4_Job_Maintenance/ScheduleJobsMonthly.sql b/SQLAgent/03_Prod/4_Job_Maintenance/ScheduleJobsMonthly.sql
deleted file mode 100644
index 508ebbc..0000000
--- a/SQLAgent/03_Prod/4_Job_Maintenance/ScheduleJobsMonthly.sql
+++ /dev/null
@@ -1,3 +0,0 @@
-USE ProdDUTASJobSchedule;
-GO
-EXEC dbo.usp_ScheduleJobsForMonth;
diff --git a/SQLAgent/03_Prod/4_Job_Maintenance/TodaysExecution.sql b/SQLAgent/03_Prod/4_Job_Maintenance/TodaysExecution.sql
deleted file mode 100644
index e116c74..0000000
--- a/SQLAgent/03_Prod/4_Job_Maintenance/TodaysExecution.sql
+++ /dev/null
@@ -1,21 +0,0 @@
-USE ProdDUTASJobSchedule;
-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;
diff --git a/SQLAgent/03_Prod/4_Job_Maintenance/TriggerMissedJob.sql b/SQLAgent/03_Prod/4_Job_Maintenance/TriggerMissedJob.sql
deleted file mode 100644
index 950d722..0000000
--- a/SQLAgent/03_Prod/4_Job_Maintenance/TriggerMissedJob.sql
+++ /dev/null
@@ -1,9 +0,0 @@
-USE [ProdDUTASJobSchedule]
-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;
-
diff --git a/SQLAgent/03_Prod/4_PowerShell_Scripts/Backup-SQLAgentJobs.ps1 b/SQLAgent/03_Prod/4_PowerShell_Scripts/Backup-SQLAgentJobs.ps1
deleted file mode 100644
index f858d64..0000000
--- a/SQLAgent/03_Prod/4_PowerShell_Scripts/Backup-SQLAgentJobs.ps1
+++ /dev/null
@@ -1,16 +0,0 @@
-# Example PowerShell snippet
-$Server = "DOES-DUTAS-SQL1"
-$BackupPath = "\\DOES-RAINVM-DEV\E$\Neeraj\SqlAgent\Backup\"
-$Timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
-$ZipFile = "$BackupPath\SQLAgentJobs_$Timestamp.zip"
-
-# Make backup folder if not exist
-if (-not (Test-Path $BackupPath)) { New-Item -ItemType Directory -Path $BackupPath }
-
-# Export all jobs as SQL files
-sqlcmd -S $Server -Q "EXEC msdb.dbo.sp_help_job" -o "$BackupPath\SQLAgentJobs_$Timestamp.txt"
-
-# Compress to zip
-Compress-Archive -Path "$BackupPath\*" -DestinationPath $ZipFile -Force
-
-Write-Host "✅ Backup complete: $ZipFile"
diff --git a/SQLAgent/03_Prod/4_PowerShell_Scripts/Execute-RemoteJob.ps1 b/SQLAgent/03_Prod/4_PowerShell_Scripts/Execute-RemoteJob.ps1
deleted file mode 100644
index eace0e0..0000000
--- a/SQLAgent/03_Prod/4_PowerShell_Scripts/Execute-RemoteJob.ps1
+++ /dev/null
@@ -1,102 +0,0 @@
-param(
- [Parameter(Mandatory = $true)]
- [string]$JobName,
-
- [Parameter(Mandatory = $true)]
- [ValidateSet('DEVL', 'TEST', 'PROD')]
- [string]$Env
-)
-
-try {
- Write-Host "Starting job $JobName in environment $Env at $(Get-Date)"
-
- # ------------------------------------------------------------
- # Extract JCL from JobName (ENV_FREQUENCY_JOB pattern)
- # ------------------------------------------------------------
- $JCL = $JobName -replace '^[A-Z]+_[A-Z]+_', ''
- Write-Host "Extracted JCL: $JCL from JobName: $JobName" -ForegroundColor Yellow
-
- # ------------------------------------------------------------
- # Environment-specific configuration
- # ------------------------------------------------------------
- switch ($Env.ToUpper()) {
- 'DEVL' {
- $ComputerName = '10.57.110.120'
- $DatabaseName = 'DevlDUTASJobSchedule'
- }
- 'TEST' {
- $ComputerName = '10.57.110.141'
- $DatabaseName = 'TestDUTASJobSchedule'
- }
- 'PROD' {
- $ComputerName = '10.57.111.120'
- $DatabaseName = 'ProdDUTASJobSchedule'
- }
- default {
- throw "Invalid environment specified: $Env"
- }
- }
-
- # ------------------------------------------------------------
- # Remote credentials
- # (recommend moving credentials to secure vault for production)
- # ------------------------------------------------------------
- $username = "DUTASSQLAdminP@does.dcgov.priv"
- $password = "4ho@3Pr&Xof8" | ConvertTo-SecureString -AsPlainText -Force
- $credential = New-Object System.Management.Automation.PSCredential($username, $password)
-
- # ------------------------------------------------------------
- # Execute job remotely using the extracted JCL
- # ------------------------------------------------------------
- Write-Host "Connecting to remote server $ComputerName ..."
- $exitCode = Invoke-Command -ComputerName $ComputerName `
- -Credential $credential `
- -Authentication CredSSP `
- -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck) `
- -ArgumentList $JobName, $JCL, $Env `
- -ScriptBlock {
- param($JobName, $JCL, $Env)
-
- Write-Host "Remote execution - JobName: $JobName, JCL: $JCL, Env: $Env"
-
- $process = Start-Process -FilePath "powershell.exe" `
- -ArgumentList "-ExecutionPolicy Bypass -File `"E:\PSScript\RCSubmit-Job.ps1`" -JobName `"$JCL`" -Env `"$Env`"" `
- -NoNewWindow -Wait -PassThru
- return $process.ExitCode
- }
-
- if ($exitCode -eq 0) {
- Write-Host "Job $JobName (JCL: $JCL) completed successfully at $(Get-Date)" -ForegroundColor Green
- } else {
- Write-Error "Job $JobName (JCL: $JCL) failed with exit code: $exitCode"
- }
-}
-catch {
- Write-Error "Job $JobName failed with error: $($_.Exception.Message)"
- $exitCode = 1
-}
-finally {
- # ------------------------------------------------------------
- # Log exit code to the appropriate database
- # ------------------------------------------------------------
- try {
- $connectionString = "Server=localhost;Database=$DatabaseName;Trusted_Connection=true;"
- $connection = New-Object System.Data.SqlClient.SqlConnection($connectionString)
- $connection.Open()
-
- $command = $connection.CreateCommand()
- $command.CommandText = @"
- INSERT INTO dbo.JobExitCodes (JobName, RunDate, ExitCode, RecordedTime)
- VALUES ('$JobName', CAST(GETDATE() AS DATE), $exitCode, GETDATE());
-"@
- $command.ExecuteNonQuery()
- $connection.Close()
- Write-Host "Exit code $exitCode logged to database $DatabaseName for job $JobName"
- }
- catch {
- $errorMsg = $_.Exception.Message
- Write-Host "Failed to log exit code to database $DatabaseName`: $errorMsg"
- }
-}
-
-exit $exitCode
\ No newline at end of file
diff --git a/SQLAgent/03_Prod/4_PowerShell_Scripts/RCSubmit-Job.ps1 b/SQLAgent/03_Prod/4_PowerShell_Scripts/RCSubmit-Job.ps1
deleted file mode 100644
index 3fb0c57..0000000
--- a/SQLAgent/03_Prod/4_PowerShell_Scripts/RCSubmit-Job.ps1
+++ /dev/null
@@ -1,108 +0,0 @@
-param(
- [string]$JobName,
- [string]$Env
-)
-
-# --- Parameter Validation ---
-if (-not $JobName) {
- Write-Host "JobName parameter is required" -ForegroundColor Red
- exit 1
-}
-if (-not $Env) {
- Write-Host "Environment (Env) parameter is required" -ForegroundColor Red
- exit 1
-}
-
-# --- Execute Job ---
-Write-Host "Submitting job: $JobName in environment: $Env" -ForegroundColor Cyan
-$output = & "$env:rcbin\submit.exe" -DSN="DOESTAX.$Env.JOBS.BATCH.LIB($JobName)"
-$exitCode = [int]$LASTEXITCODE
-$isSuccess = 0
-
-# --- Parse SYSLOG Path ---
-$syslogPath = $null
-$syslogFolder = "Not found"
-$content = @()
-$summary = @()
-
-try {
- $syslogPath = $output | Select-String -Pattern "SYSLOG=\[(.*)\]" | ForEach-Object { $_.Matches.Groups[1].Value }
-
- if ($syslogPath -and (Test-Path $syslogPath)) {
- $syslogFolder = Split-Path $syslogPath -Parent
- $content = Get-Content $syslogPath -ErrorAction Stop
- $summary = $content | Select-String -Pattern "%Job Overall Stats:" -Context 0,7 | ForEach-Object {
- $_.Context.PostContext | Select-Object -Skip 1 -First 5
- }
- } else {
- Write-Host "SYSLOG path not found or inaccessible: $syslogPath" -ForegroundColor Yellow
- $summary = @("SYSLOG file not found in output", "Raw output:", $output -join "`n")
- }
-}
-catch {
- Write-Host "Error processing SYSLOG: $($_.Exception.Message)" -ForegroundColor Yellow
- $summary = @("Error reading SYSLOG: $($_.Exception.Message)", "Raw output:", $output -join "`n")
-}
-
-# --- Evaluate Return Codes ---
-$successConditions = @(
- { $JobName -eq "GSIRQ300" -and $exitCode -eq 50 },
- { $JobName -eq "DTSGWAGE" -and $exitCode -eq 8 },
- { $JobName -eq "DTSGCHKS" -and $exitCode -eq 8 },
- { $JobName -eq "DTSGPAYT" -and $exitCode -eq 8 },
- { $JobName -eq "DTSBXACH" -and $exitCode -eq 2 },
- { $JobName -eq "DTSBXREL" -and $exitCode -eq 2 },
- { $JobName -eq "DTSMIN02" -and $exitCode -eq 4 },
- { $JobName -eq "DTSBE405" -and $exitCode -eq 910 },
- { $JobName -eq "DTSBXREJ" -and $exitCode -eq 4 },
- { $JobName -eq "DTSRQ444" -and $exitCode -eq 4 },
- { $exitCode -eq 0 }
-)
-
-if ($successConditions | Where-Object { & $_ }) {
- Write-Host "Job $JobName succeeded with code $exitCode" -ForegroundColor Green
- $isSuccess = 0
-} else {
- Write-Host "Job $JobName failed with code $exitCode" -ForegroundColor Red
- $isSuccess = 1
- # Only use error if we don't have a proper summary
- if ($summary.Count -eq 0) {
- $summary = @($Error[0])
- }
-}
-
-# --- Email Notification ---
-$smtpServer = "smtp4.dc.gov"
-$fromEmail = "Dutas@dc.gov"
-$toEmail = "neerajk@innovaconsulting.com"
-$ccEmail = @("neerajk@innovaconsulting.com")
-
-$emailBody = @"
-
-DUTAS Batch Job: $JobName Execution Report
-==========================================
-$($summary -join "`n")
-==========================================
-
-Return Code: $exitCode
-Status: $(if ($isSuccess -eq 0) { "SUCCESS" } else { "FAILED" })
-JOBLOG Path: $syslogFolder
-
-"@
-
-try {
- Send-MailMessage -SmtpServer $smtpServer -Port 25 `
- -From $fromEmail -To $toEmail -Cc $ccEmail `
- -Subject "DUTAS-[$Env] Job Status: $JobName - $(if ($isSuccess -eq 0) { 'SUCCESS' } else { 'FAILED' })" `
- -Body $emailBody -BodyAsHtml
- Write-Host "Email sent successfully to $toEmail" -ForegroundColor Cyan
-}
-catch {
- Write-Host "Failed to send email: $($_.Exception.Message)" -ForegroundColor Yellow
-}
-
-Write-Host "`n---------------------------------------------"
-Write-Host "Job: $JobName | ExitCode: $exitCode | Status: $(if ($isSuccess -eq 0) { 'SUCCESS' } else { 'FAILED' })"
-Write-Host "---------------------------------------------`n"
-
-exit $isSuccess
\ No newline at end of file
diff --git a/SQLAgent/03_Prod/5_Deployment/Deploy_DEVL_to_TEST.sql b/SQLAgent/03_Prod/5_Deployment/Deploy_DEVL_to_TEST.sql
deleted file mode 100644
index 2cd3fa5..0000000
--- a/SQLAgent/03_Prod/5_Deployment/Deploy_DEVL_to_TEST.sql
+++ /dev/null
@@ -1,15 +0,0 @@
-DECLARE @SrcDB NVARCHAR(128) = 'DevlDUTASJobSchedule';
-DECLARE @NewDB NVARCHAR(128) = 'TestDUTASJobSchedule';
-DECLARE @Backup NVARCHAR(260) = '\\DOES-RAINVM-DEV\E$\Neeraj\SqlAgent\Backup\' + @SrcDB + '.bak';
-
--- Backup Source
-BACKUP DATABASE @SrcDB TO DISK = @Backup WITH INIT, COMPRESSION;
-
--- Restore as Target
-DECLARE @SQL NVARCHAR(MAX) = '
-RESTORE DATABASE [' + @NewDB + ']
-FROM DISK = N''' + @Backup + '''
-WITH MOVE N''' + @SrcDB + ''' TO N''\\DOES-RAINVM-DEV\E$\SQLData\' + @NewDB + '.mdf'',
- MOVE N''' + @SrcDB + '_log'' TO N''\\DOES-RAINVM-DEV\E$\SQLLogs\' + @NewDB + '_log.ldf'',
- REPLACE;';
-EXEC(@SQL);
diff --git a/SQLAgent/03_Prod/5_Deployment/Deploy_TEST_to_PROD.sql b/SQLAgent/03_Prod/5_Deployment/Deploy_TEST_to_PROD.sql
deleted file mode 100644
index 3cd8de6..0000000
--- a/SQLAgent/03_Prod/5_Deployment/Deploy_TEST_to_PROD.sql
+++ /dev/null
@@ -1,15 +0,0 @@
-DECLARE @SrcDB NVARCHAR(128) = 'TestDUTASJobSchedule';
-DECLARE @NewDB NVARCHAR(128) = 'ProdDUTASJobSchedule';
-DECLARE @Backup NVARCHAR(260) = '\\DOES-RAINVM-DEV\E$\Neeraj\SqlAgent\Backup\' + @SrcDB + '.bak';
-
--- Backup Source
-BACKUP DATABASE @SrcDB TO DISK = @Backup WITH INIT, COMPRESSION;
-
--- Restore as Target
-DECLARE @SQL NVARCHAR(MAX) = '
-RESTORE DATABASE [' + @NewDB + ']
-FROM DISK = N''' + @Backup + '''
-WITH MOVE N''' + @SrcDB + ''' TO N''\\DOES-RAINVM-DEV\E$\SQLData\' + @NewDB + '.mdf'',
- MOVE N''' + @SrcDB + '_log'' TO N''\\DOES-RAINVM-DEV\E$\SQLLogs\' + @NewDB + '_log.ldf'',
- REPLACE;';
-EXEC(@SQL);
diff --git a/SQLAgent/03_Prod/5_PowerShell_Scripts/Execute-RemoteJob.ps1 b/SQLAgent/03_Prod/5_PowerShell_Scripts/Execute-RemoteJob.ps1
deleted file mode 100644
index ddf3ea8..0000000
--- a/SQLAgent/03_Prod/5_PowerShell_Scripts/Execute-RemoteJob.ps1
+++ /dev/null
@@ -1,102 +0,0 @@
-param(
- [Parameter(Mandatory = $true)]
- [string]$JobName,
-
- [Parameter(Mandatory = $true)]
- [ValidateSet('DEVL', 'TEST', 'PROD')]
- [string]$Env
-)
-
-try {
- Write-Host "Starting job $JobName in environment $Env at $(Get-Date)"
-
- # ------------------------------------------------------------
- # Extract JCL from JobName (ENV_FREQUENCY_JOB pattern)
- # ------------------------------------------------------------
- $JCL = $JobName -replace '^[A-Z]+_[A-Z]+_', ''
- Write-Host "Extracted JCL: $JCL from JobName: $JobName" -ForegroundColor Yellow
-
- # ------------------------------------------------------------
- # Environment-specific configuration
- # ------------------------------------------------------------
- switch ($Env.ToUpper()) {
- 'DEVL' {
- $ComputerName = '10.57.110.120'
- $DatabaseName = 'DevlDUTASJobSchedule'
- }
- 'TEST' {
- $ComputerName = '10.57.110.141'
- $DatabaseName = 'TestDUTASJobSchedule'
- }
- 'PROD' {
- $ComputerName = '10.57.111.125'
- $DatabaseName = 'ProdDUTASJobSchedule'
- }
- default {
- throw "Invalid environment specified: $Env"
- }
- }
-
- # ------------------------------------------------------------
- # Remote credentials
- # (recommend moving credentials to secure vault for production)
- # ------------------------------------------------------------
- $username = "DUTASSQLAdminP@does.dcgov.priv"
- $password = "4ho@3Pr&Xof8" | ConvertTo-SecureString -AsPlainText -Force
- $credential = New-Object System.Management.Automation.PSCredential($username, $password)
-
- # ------------------------------------------------------------
- # Execute job remotely using the extracted JCL
- # ------------------------------------------------------------
- Write-Host "Connecting to remote server $ComputerName ..."
- $exitCode = Invoke-Command -ComputerName $ComputerName `
- -Credential $credential `
- -Authentication CredSSP `
- -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck) `
- -ArgumentList $JobName, $JCL, $Env `
- -ScriptBlock {
- param($JobName, $JCL, $Env)
-
- Write-Host "Remote execution - JobName: $JobName, JCL: $JCL, Env: $Env"
-
- $process = Start-Process -FilePath "powershell.exe" `
- -ArgumentList "-ExecutionPolicy Bypass -File `"E:\PSScript\RCSubmit-Job.ps1`" -JobName `"$JCL`" -Env `"$Env`"" `
- -NoNewWindow -Wait -PassThru
- return $process.ExitCode
- }
-
- if ($exitCode -eq 0) {
- Write-Host "Job $JobName (JCL: $JCL) completed successfully at $(Get-Date)" -ForegroundColor Green
- } else {
- Write-Error "Job $JobName (JCL: $JCL) failed with exit code: $exitCode"
- }
-}
-catch {
- Write-Error "Job $JobName failed with error: $($_.Exception.Message)"
- $exitCode = 1
-}
-finally {
- # ------------------------------------------------------------
- # Log exit code to the appropriate database
- # ------------------------------------------------------------
- try {
- $connectionString = "Server=localhost;Database=$DatabaseName;Trusted_Connection=true;"
- $connection = New-Object System.Data.SqlClient.SqlConnection($connectionString)
- $connection.Open()
-
- $command = $connection.CreateCommand()
- $command.CommandText = @"
- INSERT INTO dbo.JobExitCodes (JobName, RunDate, ExitCode, RecordedTime)
- VALUES ('$JobName', CAST(GETDATE() AS DATE), $exitCode, GETDATE());
-"@
- $command.ExecuteNonQuery()
- $connection.Close()
- Write-Host "Exit code $exitCode logged to database $DatabaseName for job $JobName"
- }
- catch {
- $errorMsg = $_.Exception.Message
- Write-Host "Failed to log exit code to database $DatabaseName`: $errorMsg"
- }
-}
-
-exit $exitCode
\ No newline at end of file
diff --git a/SQLAgent/03_Prod/5_PowerShell_Scripts/RCSubmit-Job.ps1 b/SQLAgent/03_Prod/5_PowerShell_Scripts/RCSubmit-Job.ps1
deleted file mode 100644
index b9893d7..0000000
--- a/SQLAgent/03_Prod/5_PowerShell_Scripts/RCSubmit-Job.ps1
+++ /dev/null
@@ -1,108 +0,0 @@
-param(
- [string]$JobName,
- [string]$Env
-)
-
-# --- Parameter Validation ---
-if (-not $JobName) {
- Write-Host "JobName parameter is required" -ForegroundColor Red
- exit 1
-}
-if (-not $Env) {
- Write-Host "Environment (Env) parameter is required" -ForegroundColor Red
- exit 1
-}
-
-# --- Execute Job ---
-Write-Host "Submitting job: $JobName in environment: $Env" -ForegroundColor Cyan
-$output = & "$env:rcbin\submit.exe" -DSN="DOESTAX.$Env.JOBS.BATCH.LIB($JobName)"
-$exitCode = [int]$LASTEXITCODE
-$isSuccess = 0
-
-# --- Parse SYSLOG Path ---
-$syslogPath = $null
-$syslogFolder = "Not found"
-$content = @()
-$summary = @()
-
-try {
- $syslogPath = $output | Select-String -Pattern "SYSLOG=\[(.*)\]" | ForEach-Object { $_.Matches.Groups[1].Value }
-
- if ($syslogPath -and (Test-Path $syslogPath)) {
- $syslogFolder = Split-Path $syslogPath -Parent
- $content = Get-Content $syslogPath -ErrorAction Stop
- $summary = $content | Select-String -Pattern "%Job Overall Stats:" -Context 0,7 | ForEach-Object {
- $_.Context.PostContext | Select-Object -Skip 1 -First 5
- }
- } else {
- Write-Host "SYSLOG path not found or inaccessible: $syslogPath" -ForegroundColor Yellow
- $summary = @("SYSLOG file not found in output", "Raw output:", $output -join "`n")
- }
-}
-catch {
- Write-Host "Error processing SYSLOG: $($_.Exception.Message)" -ForegroundColor Yellow
- $summary = @("Error reading SYSLOG: $($_.Exception.Message)", "Raw output:", $output -join "`n")
-}
-
-# --- Evaluate Return Codes ---
-$successConditions = @(
- { $JobName -eq "GSIRQ300" -and $exitCode -eq 50 },
- { $JobName -eq "DTSGWAGE" -and $exitCode -eq 8 },
- { $JobName -eq "DTSGCHKS" -and $exitCode -eq 8 },
- { $JobName -eq "DTSGPAYT" -and $exitCode -eq 8 },
- { $JobName -eq "DTSBXACH" -and $exitCode -eq 2 },
- { $JobName -eq "DTSBXREL" -and $exitCode -eq 2 },
- { $JobName -eq "DTSMIN02" -and $exitCode -eq 4 },
- { $JobName -eq "DTSBE405" -and $exitCode -eq 910 },
- { $JobName -eq "DTSBXREJ" -and $exitCode -eq 4 },
- { $JobName -eq "DTSRQ444" -and $exitCode -eq 4 },
- { $exitCode -eq 0 }
-)
-
-if ($successConditions | Where-Object { & $_ }) {
- Write-Host "Job $JobName succeeded with code $exitCode" -ForegroundColor Green
- $isSuccess = 0
-} else {
- Write-Host "Job $JobName failed with code $exitCode" -ForegroundColor Red
- $isSuccess = 1
- # Only use error if we don't have a proper summary
- if ($summary.Count -eq 0) {
- $summary = @($Error[0])
- }
-}
-
-# --- Email Notification ---
-$smtpServer = "smtp4.dc.gov"
-$fromEmail = "Dutas@dc.gov"
-$toEmail = "zarath.lalputan@dc.gov"
-$ccEmail = @("srujani.chandragiri@dc.gov")
-
-$emailBody = @"
-
-DUTAS Batch Job: $JobName Execution Report
-==========================================
-$($summary -join "`n")
-==========================================
-
-Return Code: $exitCode
-Status: $(if ($isSuccess -eq 0) { "SUCCESS" } else { "FAILED" })
-JOBLOG Path: $syslogFolder
-
-"@
-
-try {
- Send-MailMessage -SmtpServer $smtpServer -Port 25 `
- -From $fromEmail -To $toEmail -Cc $ccEmail `
- -Subject "DUTAS-[$Env] Job Status: $JobName - $(if ($isSuccess -eq 0) { 'SUCCESS' } else { 'FAILED' })" `
- -Body $emailBody -BodyAsHtml
- Write-Host "Email sent successfully to $toEmail" -ForegroundColor Cyan
-}
-catch {
- Write-Host "Failed to send email: $($_.Exception.Message)" -ForegroundColor Yellow
-}
-
-Write-Host "`n---------------------------------------------"
-Write-Host "Job: $JobName | ExitCode: $exitCode | Status: $(if ($isSuccess -eq 0) { 'SUCCESS' } else { 'FAILED' })"
-Write-Host "---------------------------------------------`n"
-
-exit $isSuccess
\ No newline at end of file
diff --git a/SQLAgent/03_Prod/6_Backup_Restore/Backup-Restore-Guide.docx b/SQLAgent/03_Prod/6_Backup_Restore/Backup-Restore-Guide.docx
deleted file mode 100644
index c19787a..0000000
Binary files a/SQLAgent/03_Prod/6_Backup_Restore/Backup-Restore-Guide.docx and /dev/null differ
diff --git a/SQLAgent/03_Prod/6_Backup_Restore/Backup-SQLAgent.ps1 b/SQLAgent/03_Prod/6_Backup_Restore/Backup-SQLAgent.ps1
deleted file mode 100644
index aa269ef..0000000
--- a/SQLAgent/03_Prod/6_Backup_Restore/Backup-SQLAgent.ps1
+++ /dev/null
@@ -1,48 +0,0 @@
-# ===================================================================
-# SQL Agent Jobs Backup Script (PowerShell)
-# Modern Version using SqlServer module
-# & "E:\Neeraj\SqlAgent\v2\01_Prod\6_Backup\Backup-SQLAgent.ps1" `
-# -ServerName "DOES-DUTAS-SQL" `
-# -BackupPath "\\DOES-RAINVM-PRD\E$\Neeraj\SqlAgent\Backup\"
-#
-# ===================================================================
-
-param (
- [Parameter(Mandatory = $true)]
- [string]$ServerName,
-
- [Parameter(Mandatory = $true)]
- [string]$BackupPath
-)
-
-# Load SQL Server PowerShell module
-Import-Module SqlServer -ErrorAction Stop
-
-# Create timestamp and output paths
-$Timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
-$ZipFile = Join-Path $BackupPath "SQLAgentJobs_$Timestamp.zip"
-
-# Ensure backup folder exists
-if (-not (Test-Path $BackupPath)) {
- New-Item -ItemType Directory -Path $BackupPath | Out-Null
-}
-
-# Connect to SQL Server
-$server = New-Object Microsoft.SqlServer.Management.Smo.Server $ServerName
-
-# Export all jobs as individual SQL scripts
-$JobFiles = @()
-foreach ($job in $server.JobServer.Jobs) {
- $SafeJobName = ($job.Name -replace '[\\/:*?"<>|]', '_')
- $FileName = Join-Path $BackupPath "$SafeJobName`_$Timestamp.sql"
- $job.Script() | Out-File -FilePath $FileName -Encoding UTF8
- $JobFiles += $FileName
-}
-
-# Compress all SQL files into a single ZIP
-Compress-Archive -Path $JobFiles -DestinationPath $ZipFile -Force
-
-# Optional: clean up individual .sql files
-# Remove-Item -Path $JobFiles
-
-Write-Host "SQL Agent jobs backup complete: $ZipFile" -ForegroundColor Green
diff --git a/SQLAgent/03_Prod/6_Backup_Restore/BackupDB.sql b/SQLAgent/03_Prod/6_Backup_Restore/BackupDB.sql
deleted file mode 100644
index dbaf325..0000000
--- a/SQLAgent/03_Prod/6_Backup_Restore/BackupDB.sql
+++ /dev/null
@@ -1,19 +0,0 @@
-USE master;
-GO
-
-DECLARE @SrcDB NVARCHAR(128) = 'ProdDUTASJobSchedule';
-DECLARE @BackupPath NVARCHAR(260) = '\\DOES-RAINVM-PRD\E$\Neeraj\SqlAgent\Backup\' + @SrcDB + '.bak';
-DECLARE @SQL NVARCHAR(MAX);
-
--- Dynamic SQL for backup
-SET @SQL = '
-BACKUP DATABASE [' + @SrcDB + ']
-TO DISK = N''' + @BackupPath + '''
-WITH INIT, COMPRESSION, STATS = 10;
-';
-
--- Execute backup
-EXEC(@SQL);
-
-PRINT 'Backup completed: ' + @BackupPath;
-GO
diff --git a/SQLAgent/03_Prod/6_Backup_Restore/Cleanup-SQLAgent.ps1 b/SQLAgent/03_Prod/6_Backup_Restore/Cleanup-SQLAgent.ps1
deleted file mode 100644
index dc1c4aa..0000000
--- a/SQLAgent/03_Prod/6_Backup_Restore/Cleanup-SQLAgent.ps1
+++ /dev/null
@@ -1,45 +0,0 @@
-<#
-.SYNOPSIS
-Deletes SQL Agent jobs whose names start with a given environment prefix (e.g., DEVL, TEST, PROD).
-
-.PARAMETER ServerName
-SQL Server instance name (use FCI virtual name if clustered).
-
-.PARAMETER Env
-Environment prefix for job deletion (e.g., DEVL, TEST, PROD).
-
-.EXAMPLE
-.\Cleanup-SQLAgent.ps1 -ServerName "DOES-DUTAS-SQL" -Env "PROD"
-#>
-
-param (
- [Parameter(Mandatory = $true)]
- [string]$ServerName,
-
- [Parameter(Mandatory = $true)]
- [string]$Environment
-)
-
-# Load SQL Server module
-Import-Module SqlServer -ErrorAction Stop
-
-# Connect to SQL Server
-$server = New-Object Microsoft.SqlServer.Management.Smo.Server $ServerName
-
-# Create log file path (same folder as script)
-$ScriptRoot = Split-Path -Parent $MyInvocation.MyCommand.Definition
-$LogPath = Join-Path $ScriptRoot "CleanupSQLAgent_$($Environment)_$(Get-Date -Format 'yyyyMMdd_HHmmss').log"
-
-"=== SQL Agent Cleanup Started for $Environment : $(Get-Date) ===" | Out-File $LogPath -Encoding UTF8
-
-# Take a snapshot of all jobs first (avoids collection modification issue)
-$jobsToDelete = @($server.JobServer.Jobs | Where-Object { $_.Name -like "$Environment*" })
-
-foreach ($job in $jobsToDelete) {
- Write-Host "Deleting job: $($job.Name)" -ForegroundColor Yellow
- "Deleting job: $($job.Name)" | Out-File $LogPath -Append -Encoding UTF8
- $job.Drop()
-}
-
-"=== Cleanup Complete for $Environment : $(Get-Date) ===" | Out-File $LogPath -Append -Encoding UTF8
-Write-Host "All $Environment SQL Agent jobs deleted successfully." -ForegroundColor Green
diff --git a/SQLAgent/03_Prod/6_Backup_Restore/CleanupSQLAgent.sql b/SQLAgent/03_Prod/6_Backup_Restore/CleanupSQLAgent.sql
deleted file mode 100644
index d25424b..0000000
--- a/SQLAgent/03_Prod/6_Backup_Restore/CleanupSQLAgent.sql
+++ /dev/null
@@ -1,27 +0,0 @@
-USE msdb;
-GO
-
-DECLARE @EnvPrefix NVARCHAR(50) = N'PROD'; -- <<< Change this to your environment prefix
-DECLARE @job_id UNIQUEIDENTIFIER;
-DECLARE @job_name NVARCHAR(200);
-
-DECLARE JobCursor CURSOR FOR
-SELECT job_id, name
-FROM msdb.dbo.sysjobs
-WHERE name LIKE @EnvPrefix + '%'; -- Only jobs starting with the given prefix
-
-OPEN JobCursor;
-FETCH NEXT FROM JobCursor INTO @job_id, @job_name;
-
-WHILE @@FETCH_STATUS = 0
-BEGIN
- PRINT 'Deleting job: ' + @job_name;
- EXEC msdb.dbo.sp_delete_job @job_id = @job_id;
- FETCH NEXT FROM JobCursor INTO @job_id, @job_name;
-END
-
-CLOSE JobCursor;
-DEALLOCATE JobCursor;
-
-PRINT 'All SQL Agent jobs starting with prefix ' + @EnvPrefix + ' deleted successfully.';
-GO
diff --git a/SQLAgent/03_Prod/6_Backup_Restore/Extract_Backup-SQLAgent.ps1 b/SQLAgent/03_Prod/6_Backup_Restore/Extract_Backup-SQLAgent.ps1
deleted file mode 100644
index d452a56..0000000
--- a/SQLAgent/03_Prod/6_Backup_Restore/Extract_Backup-SQLAgent.ps1
+++ /dev/null
@@ -1,8 +0,0 @@
-$BackupZip = "\\DOES-RAINVM-PRD\E$\Neeraj\SqlAgent\Backup\SQLAgentJobs_20251018_153000.zip"
-$ExtractPath = "\\DOES-RAINVM-PRD\E$\Neeraj\SqlAgent\Restore\"
-
-# Create folder if not exist
-if (-not (Test-Path $ExtractPath)) { New-Item -ItemType Directory -Path $ExtractPath | Out-Null }
-
-# Extract the ZIP
-Expand-Archive -Path $BackupZip -DestinationPath $ExtractPath -Force
diff --git a/SQLAgent/03_Prod/6_Backup_Restore/RestoreDB.sql b/SQLAgent/03_Prod/6_Backup_Restore/RestoreDB.sql
deleted file mode 100644
index a9f1c12..0000000
--- a/SQLAgent/03_Prod/6_Backup_Restore/RestoreDB.sql
+++ /dev/null
@@ -1,31 +0,0 @@
-USE master;
-GO
-
-DECLARE @SrcDB NVARCHAR(128) = 'ProdDUTASJobSchedule'; -- original database
-DECLARE @NewDB NVARCHAR(128) = 'ProdDUTASJobSchedule'; -- database name to restore as
-DECLARE @BackupPath NVARCHAR(260) = '\\DOES-RAINVM-PRD\E$\Neeraj\SqlAgent\Backup\' + @SrcDB + '.bak';
-DECLARE @SQL NVARCHAR(MAX);
-
--- Optional: check logical file names inside backup
--- RESTORE FILELISTONLY FROM DISK = @BackupPath;
-
--- Dynamic SQL for restore
-SET @SQL = '
--- Optional: disconnect active connections
-ALTER DATABASE [' + @NewDB + '] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
-
-RESTORE DATABASE [' + @NewDB + ']
-FROM DISK = N''' + @BackupPath + '''
-WITH MOVE N''' + @SrcDB + ''' TO N''\\DOES-RAINVM-PRD\E$\SQLData\' + @NewDB + '.mdf'',
- MOVE N''' + @SrcDB + '_log'' TO N''\\DOES-RAINVM-PRD\E$\SQLLogs\' + @NewDB + '_log.ldf'',
- REPLACE, STATS = 10;
-
--- Set database back to multi-user
-ALTER DATABASE [' + @NewDB + '] SET MULTI_USER;
-';
-
--- Execute restore
-EXEC(@SQL);
-
-PRINT 'Database restored successfully as ' + @NewDB;
-GO
diff --git a/SQLAgent/03_Prod/6_Backup_Restore/RestoreSQLAgent.sql b/SQLAgent/03_Prod/6_Backup_Restore/RestoreSQLAgent.sql
deleted file mode 100644
index 1808f8f..0000000
--- a/SQLAgent/03_Prod/6_Backup_Restore/RestoreSQLAgent.sql
+++ /dev/null
@@ -1,12 +0,0 @@
-# Connect to SQL Server
-$ServerName = "DOES-DUTAS-SQL"
-$SqlInstance = "localhost" # or server instance name
-
-# Execute each script
-$ScriptFiles = Get-ChildItem -Path $ExtractPath -Filter *.sql
-foreach ($file in $ScriptFiles) {
- Write-Host "Restoring job from: $($file.FullName)"
- sqlcmd -S $SqlInstance -i $file.FullName
-}
-
-Write-Host "All SQL Agent jobs restored successfully."
diff --git a/SQLAgent/DUTASJobSchedule_Configuration_Document_v0.1.docx b/SQLAgent/DUTASJobSchedule_Configuration_Document_v0.1.docx
deleted file mode 100644
index d16aaf8..0000000
Binary files a/SQLAgent/DUTASJobSchedule_Configuration_Document_v0.1.docx and /dev/null differ
diff --git a/SQLAgent/DUTAS_SQLAgent_Config_v0.2.docx b/SQLAgent/DUTAS_SQLAgent_Config_v0.2.docx
deleted file mode 100644
index 5d4a185..0000000
Binary files a/SQLAgent/DUTAS_SQLAgent_Config_v0.2.docx and /dev/null differ
diff --git a/SQLAgent/DUTAS_SQLAgent_Config_v0.3.docx b/SQLAgent/DUTAS_SQLAgent_Config_v0.3.docx
deleted file mode 100644
index 4b23160..0000000
Binary files a/SQLAgent/DUTAS_SQLAgent_Config_v0.3.docx and /dev/null differ