From 716014d0bf470360c3e00872b5881a5af394026b Mon Sep 17 00:00:00 2001 From: Neeraj Kumar Date: Mon, 20 Oct 2025 08:00:40 -0400 Subject: [PATCH] Remove old SQLAgent completely --- .../01_Devl/1_Database_Setup/CreateDB.sql | 83 ------ .../1_Database_Setup/InsertHolidays.sql | 29 -- .../1_Database_Setup/InsertJobControl.sql | 143 --------- .../InsertJobDependencies.sql | 92 ------ .../01_Devl/2_Functions/fn_GetNextWorkday.sql | 17 -- .../2_Functions/fn_GetPreviousWorkday.sql | 17 -- .../usp_CheckJobConditions.sql | Bin 7678 -> 0 bytes .../usp_CheckJobConditions_Generic.sql | Bin 5152 -> 0 bytes .../usp_CreateSQLAgentJob.sql | Bin 18746 -> 0 bytes .../2_Stored_Procedures/usp_ForceComplete.sql | Bin 2898 -> 0 bytes .../usp_ScheduleMonthlyJob.sql | Bin 9930 -> 0 bytes .../usp_TriggerMissedJobs.sql | Bin 4716 -> 0 bytes .../usp_UpdateJobStatus_Generic.sql | Bin 3240 -> 0 bytes .../3_Job_Maintenance/ActivateMonthlyJob.sql | 65 ---- .../3_Job_Maintenance/AddDailyJobs.sql | 279 ------------------ .../3_Job_Maintenance/AddMonthlyJobs.sql | 76 ----- .../01_Devl/3_Job_Maintenance/AddOneJob.sql | 9 - .../3_Job_Maintenance/AddWeeklyJobs.sql | 81 ----- .../DailyJobScheduleLookup.sql | 86 ------ .../DeactivateMonthlyJob.sql | 12 - .../DetachDeleteScheduleByName.sql | 13 - .../3_Job_Maintenance/ForceCompleteJob.sql | 16 - .../01_Devl/3_Job_Maintenance/JobInfo.sql | 47 --- .../3_Job_Maintenance/SQLAgentInfo.sql | 42 --- .../3_Job_Maintenance/TodaysExecution.sql | 21 -- .../3_Job_Maintenance/TriggerMissedJob.sql | 9 - .../usp_CheckJobConditions.sql | Bin 7678 -> 0 bytes .../usp_CheckJobConditions_Generic.sql | Bin 5152 -> 0 bytes .../usp_CreateDailyJobSchedule.sql | 98 ------ .../usp_CreateSQLAgentJob.sql | Bin 12616 -> 0 bytes .../usp_CreateWeeklySchedules.sql | 223 -------------- .../3_Stored_Procedures/usp_ForceComplete.sql | Bin 2898 -> 0 bytes .../usp_GenerateJobSchedule.sql | 261 ---------------- .../3_Stored_Procedures/usp_ScheduleJob.sql | 160 ---------- .../usp_ScheduleJobsForMonth.sql | 39 --- .../usp_TriggerMissedJobs.sql | Bin 4716 -> 0 bytes .../usp_UpdateJobStatus_Generic.sql | Bin 3240 -> 0 bytes .../4_Job_Maintenance/ActivateOnDemandJob.sql | 10 - .../AddAllJobsToSQLAgent.sql | 141 --------- .../4_Job_Maintenance/AddDailyJobSchedule.sql | 1 - .../4_Job_Maintenance/AddNewJobToSQLAgent.sql | 5 - .../AddWeeklyJobSchedule.sql | 1 - .../DailyJobScheduleLookup.sql | 86 ------ .../4_Job_Maintenance/DeactivateJob.sql | 12 - .../4_Job_Maintenance/DeleteSchedule.sql | 27 -- .../DetachDeleteScheduleByName.sql | 13 - .../4_Job_Maintenance/ForceCompleteJob.sql | 16 - .../GenerateJobScheduleTable.sql | 10 - .../01_Devl/4_Job_Maintenance/JobInfo.sql | 47 --- .../4_Job_Maintenance/SQLAgentInfo.sql | 42 --- .../4_Job_Maintenance/ScheduleJobsMonthly.sql | 3 - .../4_Job_Maintenance/TodaysExecution.sql | 21 -- .../4_Job_Maintenance/TriggerMissedJob.sql | 9 - .../Backup-SQLAgentJobs.ps1 | 16 - .../Execute-RemoteJob.ps1 | 102 ------- .../4_PowerShell_Scripts/RCSubmit-Job.ps1 | 108 ------- .../5_Deployment/Deploy_DEVL_to_TEST.sql | 15 - .../5_Deployment/Deploy_TEST_to_PROD.sql | 15 - .../Execute-RemoteJob.ps1 | 102 ------- .../5_PowerShell_Scripts/RCSubmit-Job.ps1 | 108 ------- .../Backup-Restore-Guide.docx | Bin 12387 -> 0 bytes .../6_Backup_Restore/Backup-SQLAgent.ps1 | 48 --- .../01_Devl/6_Backup_Restore/BackupDB.sql | 19 -- .../6_Backup_Restore/Cleanup-SQLAgent.ps1 | 45 --- .../6_Backup_Restore/CleanupSQLAgent.sql | 27 -- .../Extract_Backup-SQLAgent.ps1 | 8 - .../01_Devl/6_Backup_Restore/RestoreDB.sql | 31 -- .../6_Backup_Restore/RestoreSQLAgent.sql | 12 - .../02_Test/1_Database_Setup/CreateDB.sql | 83 ------ .../1_Database_Setup/InsertHolidays.sql | 29 -- .../1_Database_Setup/InsertJobControl.sql | 143 --------- .../InsertJobDependencies.sql | 92 ------ .../02_Test/2_Functions/fn_GetNextWorkday.sql | 17 -- .../2_Functions/fn_GetPreviousWorkday.sql | 17 -- .../usp_CheckJobConditions.sql | Bin 7678 -> 0 bytes .../usp_CheckJobConditions_Generic.sql | Bin 5152 -> 0 bytes .../usp_CreateSQLAgentJob.sql | Bin 18746 -> 0 bytes .../2_Stored_Procedures/usp_ForceComplete.sql | Bin 2898 -> 0 bytes .../usp_ScheduleMonthlyJob.sql | Bin 9930 -> 0 bytes .../usp_TriggerMissedJobs.sql | Bin 4716 -> 0 bytes .../usp_UpdateJobStatus_Generic.sql | Bin 3240 -> 0 bytes .../3_Job_Maintenance/ActivateMonthlyJob.sql | 65 ---- .../3_Job_Maintenance/AddDailyJobs.sql | 279 ------------------ .../3_Job_Maintenance/AddMonthlyJobs.sql | 76 ----- .../02_Test/3_Job_Maintenance/AddOneJob.sql | 9 - .../3_Job_Maintenance/AddWeeklyJobs.sql | 81 ----- .../DailyJobScheduleLookup.sql | 86 ------ .../DeactivateMonthlyJob.sql | 12 - .../DetachDeleteScheduleByName.sql | 13 - .../3_Job_Maintenance/ForceCompleteJob.sql | 16 - .../02_Test/3_Job_Maintenance/JobInfo.sql | 47 --- .../3_Job_Maintenance/SQLAgentInfo.sql | 42 --- .../3_Job_Maintenance/TodaysExecution.sql | 21 -- .../3_Job_Maintenance/TriggerMissedJob.sql | 9 - .../usp_CheckJobConditions.sql | Bin 7678 -> 0 bytes .../usp_CheckJobConditions_Generic.sql | Bin 5152 -> 0 bytes .../usp_CreateDailyJobSchedule.sql | 98 ------ .../usp_CreateSQLAgentJob.sql | Bin 12616 -> 0 bytes .../usp_CreateWeeklySchedules.sql | 223 -------------- .../3_Stored_Procedures/usp_ForceComplete.sql | Bin 2898 -> 0 bytes .../usp_GenerateJobSchedule.sql | 261 ---------------- .../3_Stored_Procedures/usp_ScheduleJob.sql | 160 ---------- .../usp_ScheduleJobsForMonth.sql | 39 --- .../usp_TriggerMissedJobs.sql | Bin 4716 -> 0 bytes .../usp_UpdateJobStatus_Generic.sql | Bin 3240 -> 0 bytes .../4_Job_Maintenance/ActivateOnDemandJob.sql | 10 - .../AddAllJobsToSQLAgent.sql | 141 --------- .../4_Job_Maintenance/AddDailyJobSchedule.sql | 1 - .../4_Job_Maintenance/AddNewJobToSQLAgent.sql | 5 - .../AddWeeklyJobSchedule.sql | 1 - .../DailyJobScheduleLookup.sql | 86 ------ .../4_Job_Maintenance/DeactivateJob.sql | 12 - .../4_Job_Maintenance/DeleteSchedule.sql | 27 -- .../DetachDeleteScheduleByName.sql | 13 - .../4_Job_Maintenance/ForceCompleteJob.sql | 16 - .../GenerateJobScheduleTable.sql | 10 - .../02_Test/4_Job_Maintenance/JobInfo.sql | 47 --- .../4_Job_Maintenance/SQLAgentInfo.sql | 42 --- .../4_Job_Maintenance/ScheduleJobsMonthly.sql | 3 - .../4_Job_Maintenance/TodaysExecution.sql | 21 -- .../4_Job_Maintenance/TriggerMissedJob.sql | 9 - .../Backup-SQLAgentJobs.ps1 | 16 - .../Execute-RemoteJob.ps1 | 102 ------- .../4_PowerShell_Scripts/RCSubmit-Job.ps1 | 108 ------- .../5_Deployment/Deploy_DEVL_to_TEST.sql | 15 - .../5_Deployment/Deploy_TEST_to_PROD.sql | 15 - .../Execute-RemoteJob.ps1 | 102 ------- .../5_PowerShell_Scripts/RCSubmit-Job.ps1 | 108 ------- .../Backup-Restore-Guide.docx | Bin 12387 -> 0 bytes .../6_Backup_Restore/Backup-SQLAgent.ps1 | 48 --- .../02_Test/6_Backup_Restore/BackupDB.sql | 19 -- .../6_Backup_Restore/Cleanup-SQLAgent.ps1 | 45 --- .../6_Backup_Restore/CleanupSQLAgent.sql | 27 -- .../Extract_Backup-SQLAgent.ps1 | 8 - .../02_Test/6_Backup_Restore/RestoreDB.sql | 31 -- .../6_Backup_Restore/RestoreSQLAgent.sql | 12 - .../03_Prod/1_Database_Setup/CreateDB.sql | 83 ------ .../1_Database_Setup/InsertHolidays.sql | 29 -- .../1_Database_Setup/InsertJobControl.sql | 143 --------- .../InsertJobDependencies.sql | 92 ------ .../03_Prod/2_Functions/fn_GetNextWorkday.sql | 17 -- .../2_Functions/fn_GetPreviousWorkday.sql | 17 -- .../usp_CheckJobConditions.sql | Bin 7678 -> 0 bytes .../usp_CheckJobConditions_Generic.sql | Bin 5152 -> 0 bytes .../usp_CreateSQLAgentJob.sql | Bin 18746 -> 0 bytes .../2_Stored_Procedures/usp_ForceComplete.sql | Bin 2898 -> 0 bytes .../usp_ScheduleMonthlyJob.sql | Bin 9930 -> 0 bytes .../usp_TriggerMissedJobs.sql | Bin 4716 -> 0 bytes .../usp_UpdateJobStatus_Generic.sql | Bin 3240 -> 0 bytes .../3_Job_Maintenance/ActivateMonthlyJob.sql | 65 ---- .../3_Job_Maintenance/AddDailyJobs.sql | 279 ------------------ .../3_Job_Maintenance/AddMonthlyJobs.sql | 76 ----- .../03_Prod/3_Job_Maintenance/AddOneJob.sql | 9 - .../3_Job_Maintenance/AddWeeklyJobs.sql | 81 ----- .../DailyJobScheduleLookup.sql | 86 ------ .../DeactivateMonthlyJob.sql | 12 - .../DetachDeleteScheduleByName.sql | 13 - .../3_Job_Maintenance/ForceCompleteJob.sql | 16 - .../03_Prod/3_Job_Maintenance/JobInfo.sql | 47 --- .../3_Job_Maintenance/SQLAgentInfo.sql | 42 --- .../3_Job_Maintenance/TodaysExecution.sql | 21 -- .../3_Job_Maintenance/TriggerMissedJob.sql | 9 - .../usp_CheckJobConditions.sql | Bin 7678 -> 0 bytes .../usp_CheckJobConditions_Generic.sql | Bin 5152 -> 0 bytes .../usp_CreateDailyJobSchedule.sql | 98 ------ .../usp_CreateSQLAgentJob.sql | Bin 12616 -> 0 bytes .../usp_CreateWeeklySchedules.sql | 223 -------------- .../3_Stored_Procedures/usp_ForceComplete.sql | Bin 2898 -> 0 bytes .../usp_GenerateJobSchedule.sql | 261 ---------------- .../3_Stored_Procedures/usp_ScheduleJob.sql | 160 ---------- .../usp_ScheduleJobsForMonth.sql | 39 --- .../usp_TriggerMissedJobs.sql | Bin 4716 -> 0 bytes .../usp_UpdateJobStatus_Generic.sql | Bin 3240 -> 0 bytes .../4_Job_Maintenance/ActivateOnDemandJob.sql | 10 - .../AddAllJobsToSQLAgent.sql | 141 --------- .../4_Job_Maintenance/AddDailyJobSchedule.sql | 1 - .../4_Job_Maintenance/AddNewJobToSQLAgent.sql | 5 - .../AddWeeklyJobSchedule.sql | 1 - .../DailyJobScheduleLookup.sql | 86 ------ .../4_Job_Maintenance/DeactivateJob.sql | 12 - .../4_Job_Maintenance/DeleteSchedule.sql | 27 -- .../DetachDeleteScheduleByName.sql | 13 - .../4_Job_Maintenance/ForceCompleteJob.sql | 16 - .../GenerateJobScheduleTable.sql | 10 - .../03_Prod/4_Job_Maintenance/JobInfo.sql | 47 --- .../4_Job_Maintenance/SQLAgentInfo.sql | 42 --- .../4_Job_Maintenance/ScheduleJobsMonthly.sql | 3 - .../4_Job_Maintenance/TodaysExecution.sql | 21 -- .../4_Job_Maintenance/TriggerMissedJob.sql | 9 - .../Backup-SQLAgentJobs.ps1 | 16 - .../Execute-RemoteJob.ps1 | 102 ------- .../4_PowerShell_Scripts/RCSubmit-Job.ps1 | 108 ------- .../5_Deployment/Deploy_DEVL_to_TEST.sql | 15 - .../5_Deployment/Deploy_TEST_to_PROD.sql | 15 - .../Execute-RemoteJob.ps1 | 102 ------- .../5_PowerShell_Scripts/RCSubmit-Job.ps1 | 108 ------- .../Backup-Restore-Guide.docx | Bin 12387 -> 0 bytes .../6_Backup_Restore/Backup-SQLAgent.ps1 | 48 --- .../03_Prod/6_Backup_Restore/BackupDB.sql | 19 -- .../6_Backup_Restore/Cleanup-SQLAgent.ps1 | 45 --- .../6_Backup_Restore/CleanupSQLAgent.sql | 27 -- .../Extract_Backup-SQLAgent.ps1 | 8 - .../03_Prod/6_Backup_Restore/RestoreDB.sql | 31 -- .../6_Backup_Restore/RestoreSQLAgent.sql | 12 - ...bSchedule_Configuration_Document_v0.1.docx | Bin 38523 -> 0 bytes SQLAgent/DUTAS_SQLAgent_Config_v0.2.docx | Bin 35891 -> 0 bytes SQLAgent/DUTAS_SQLAgent_Config_v0.3.docx | Bin 37959 -> 0 bytes 207 files changed, 9054 deletions(-) delete mode 100644 SQLAgent/01_Devl/1_Database_Setup/CreateDB.sql delete mode 100644 SQLAgent/01_Devl/1_Database_Setup/InsertHolidays.sql delete mode 100644 SQLAgent/01_Devl/1_Database_Setup/InsertJobControl.sql delete mode 100644 SQLAgent/01_Devl/1_Database_Setup/InsertJobDependencies.sql delete mode 100644 SQLAgent/01_Devl/2_Functions/fn_GetNextWorkday.sql delete mode 100644 SQLAgent/01_Devl/2_Functions/fn_GetPreviousWorkday.sql delete mode 100644 SQLAgent/01_Devl/2_Stored_Procedures/usp_CheckJobConditions.sql delete mode 100644 SQLAgent/01_Devl/2_Stored_Procedures/usp_CheckJobConditions_Generic.sql delete mode 100644 SQLAgent/01_Devl/2_Stored_Procedures/usp_CreateSQLAgentJob.sql delete mode 100644 SQLAgent/01_Devl/2_Stored_Procedures/usp_ForceComplete.sql delete mode 100644 SQLAgent/01_Devl/2_Stored_Procedures/usp_ScheduleMonthlyJob.sql delete mode 100644 SQLAgent/01_Devl/2_Stored_Procedures/usp_TriggerMissedJobs.sql delete mode 100644 SQLAgent/01_Devl/2_Stored_Procedures/usp_UpdateJobStatus_Generic.sql delete mode 100644 SQLAgent/01_Devl/3_Job_Maintenance/ActivateMonthlyJob.sql delete mode 100644 SQLAgent/01_Devl/3_Job_Maintenance/AddDailyJobs.sql delete mode 100644 SQLAgent/01_Devl/3_Job_Maintenance/AddMonthlyJobs.sql delete mode 100644 SQLAgent/01_Devl/3_Job_Maintenance/AddOneJob.sql delete mode 100644 SQLAgent/01_Devl/3_Job_Maintenance/AddWeeklyJobs.sql delete mode 100644 SQLAgent/01_Devl/3_Job_Maintenance/DailyJobScheduleLookup.sql delete mode 100644 SQLAgent/01_Devl/3_Job_Maintenance/DeactivateMonthlyJob.sql delete mode 100644 SQLAgent/01_Devl/3_Job_Maintenance/DetachDeleteScheduleByName.sql delete mode 100644 SQLAgent/01_Devl/3_Job_Maintenance/ForceCompleteJob.sql delete mode 100644 SQLAgent/01_Devl/3_Job_Maintenance/JobInfo.sql delete mode 100644 SQLAgent/01_Devl/3_Job_Maintenance/SQLAgentInfo.sql delete mode 100644 SQLAgent/01_Devl/3_Job_Maintenance/TodaysExecution.sql delete mode 100644 SQLAgent/01_Devl/3_Job_Maintenance/TriggerMissedJob.sql delete mode 100644 SQLAgent/01_Devl/3_Stored_Procedures/usp_CheckJobConditions.sql delete mode 100644 SQLAgent/01_Devl/3_Stored_Procedures/usp_CheckJobConditions_Generic.sql delete mode 100644 SQLAgent/01_Devl/3_Stored_Procedures/usp_CreateDailyJobSchedule.sql delete mode 100644 SQLAgent/01_Devl/3_Stored_Procedures/usp_CreateSQLAgentJob.sql delete mode 100644 SQLAgent/01_Devl/3_Stored_Procedures/usp_CreateWeeklySchedules.sql delete mode 100644 SQLAgent/01_Devl/3_Stored_Procedures/usp_ForceComplete.sql delete mode 100644 SQLAgent/01_Devl/3_Stored_Procedures/usp_GenerateJobSchedule.sql delete mode 100644 SQLAgent/01_Devl/3_Stored_Procedures/usp_ScheduleJob.sql delete mode 100644 SQLAgent/01_Devl/3_Stored_Procedures/usp_ScheduleJobsForMonth.sql delete mode 100644 SQLAgent/01_Devl/3_Stored_Procedures/usp_TriggerMissedJobs.sql delete mode 100644 SQLAgent/01_Devl/3_Stored_Procedures/usp_UpdateJobStatus_Generic.sql delete mode 100644 SQLAgent/01_Devl/4_Job_Maintenance/ActivateOnDemandJob.sql delete mode 100644 SQLAgent/01_Devl/4_Job_Maintenance/AddAllJobsToSQLAgent.sql delete mode 100644 SQLAgent/01_Devl/4_Job_Maintenance/AddDailyJobSchedule.sql delete mode 100644 SQLAgent/01_Devl/4_Job_Maintenance/AddNewJobToSQLAgent.sql delete mode 100644 SQLAgent/01_Devl/4_Job_Maintenance/AddWeeklyJobSchedule.sql delete mode 100644 SQLAgent/01_Devl/4_Job_Maintenance/DailyJobScheduleLookup.sql delete mode 100644 SQLAgent/01_Devl/4_Job_Maintenance/DeactivateJob.sql delete mode 100644 SQLAgent/01_Devl/4_Job_Maintenance/DeleteSchedule.sql delete mode 100644 SQLAgent/01_Devl/4_Job_Maintenance/DetachDeleteScheduleByName.sql delete mode 100644 SQLAgent/01_Devl/4_Job_Maintenance/ForceCompleteJob.sql delete mode 100644 SQLAgent/01_Devl/4_Job_Maintenance/GenerateJobScheduleTable.sql delete mode 100644 SQLAgent/01_Devl/4_Job_Maintenance/JobInfo.sql delete mode 100644 SQLAgent/01_Devl/4_Job_Maintenance/SQLAgentInfo.sql delete mode 100644 SQLAgent/01_Devl/4_Job_Maintenance/ScheduleJobsMonthly.sql delete mode 100644 SQLAgent/01_Devl/4_Job_Maintenance/TodaysExecution.sql delete mode 100644 SQLAgent/01_Devl/4_Job_Maintenance/TriggerMissedJob.sql delete mode 100644 SQLAgent/01_Devl/4_PowerShell_Scripts/Backup-SQLAgentJobs.ps1 delete mode 100644 SQLAgent/01_Devl/4_PowerShell_Scripts/Execute-RemoteJob.ps1 delete mode 100644 SQLAgent/01_Devl/4_PowerShell_Scripts/RCSubmit-Job.ps1 delete mode 100644 SQLAgent/01_Devl/5_Deployment/Deploy_DEVL_to_TEST.sql delete mode 100644 SQLAgent/01_Devl/5_Deployment/Deploy_TEST_to_PROD.sql delete mode 100644 SQLAgent/01_Devl/5_PowerShell_Scripts/Execute-RemoteJob.ps1 delete mode 100644 SQLAgent/01_Devl/5_PowerShell_Scripts/RCSubmit-Job.ps1 delete mode 100644 SQLAgent/01_Devl/6_Backup_Restore/Backup-Restore-Guide.docx delete mode 100644 SQLAgent/01_Devl/6_Backup_Restore/Backup-SQLAgent.ps1 delete mode 100644 SQLAgent/01_Devl/6_Backup_Restore/BackupDB.sql delete mode 100644 SQLAgent/01_Devl/6_Backup_Restore/Cleanup-SQLAgent.ps1 delete mode 100644 SQLAgent/01_Devl/6_Backup_Restore/CleanupSQLAgent.sql delete mode 100644 SQLAgent/01_Devl/6_Backup_Restore/Extract_Backup-SQLAgent.ps1 delete mode 100644 SQLAgent/01_Devl/6_Backup_Restore/RestoreDB.sql delete mode 100644 SQLAgent/01_Devl/6_Backup_Restore/RestoreSQLAgent.sql delete mode 100644 SQLAgent/02_Test/1_Database_Setup/CreateDB.sql delete mode 100644 SQLAgent/02_Test/1_Database_Setup/InsertHolidays.sql delete mode 100644 SQLAgent/02_Test/1_Database_Setup/InsertJobControl.sql delete mode 100644 SQLAgent/02_Test/1_Database_Setup/InsertJobDependencies.sql delete mode 100644 SQLAgent/02_Test/2_Functions/fn_GetNextWorkday.sql delete mode 100644 SQLAgent/02_Test/2_Functions/fn_GetPreviousWorkday.sql delete mode 100644 SQLAgent/02_Test/2_Stored_Procedures/usp_CheckJobConditions.sql delete mode 100644 SQLAgent/02_Test/2_Stored_Procedures/usp_CheckJobConditions_Generic.sql delete mode 100644 SQLAgent/02_Test/2_Stored_Procedures/usp_CreateSQLAgentJob.sql delete mode 100644 SQLAgent/02_Test/2_Stored_Procedures/usp_ForceComplete.sql delete mode 100644 SQLAgent/02_Test/2_Stored_Procedures/usp_ScheduleMonthlyJob.sql delete mode 100644 SQLAgent/02_Test/2_Stored_Procedures/usp_TriggerMissedJobs.sql delete mode 100644 SQLAgent/02_Test/2_Stored_Procedures/usp_UpdateJobStatus_Generic.sql delete mode 100644 SQLAgent/02_Test/3_Job_Maintenance/ActivateMonthlyJob.sql delete mode 100644 SQLAgent/02_Test/3_Job_Maintenance/AddDailyJobs.sql delete mode 100644 SQLAgent/02_Test/3_Job_Maintenance/AddMonthlyJobs.sql delete mode 100644 SQLAgent/02_Test/3_Job_Maintenance/AddOneJob.sql delete mode 100644 SQLAgent/02_Test/3_Job_Maintenance/AddWeeklyJobs.sql delete mode 100644 SQLAgent/02_Test/3_Job_Maintenance/DailyJobScheduleLookup.sql delete mode 100644 SQLAgent/02_Test/3_Job_Maintenance/DeactivateMonthlyJob.sql delete mode 100644 SQLAgent/02_Test/3_Job_Maintenance/DetachDeleteScheduleByName.sql delete mode 100644 SQLAgent/02_Test/3_Job_Maintenance/ForceCompleteJob.sql delete mode 100644 SQLAgent/02_Test/3_Job_Maintenance/JobInfo.sql delete mode 100644 SQLAgent/02_Test/3_Job_Maintenance/SQLAgentInfo.sql delete mode 100644 SQLAgent/02_Test/3_Job_Maintenance/TodaysExecution.sql delete mode 100644 SQLAgent/02_Test/3_Job_Maintenance/TriggerMissedJob.sql delete mode 100644 SQLAgent/02_Test/3_Stored_Procedures/usp_CheckJobConditions.sql delete mode 100644 SQLAgent/02_Test/3_Stored_Procedures/usp_CheckJobConditions_Generic.sql delete mode 100644 SQLAgent/02_Test/3_Stored_Procedures/usp_CreateDailyJobSchedule.sql delete mode 100644 SQLAgent/02_Test/3_Stored_Procedures/usp_CreateSQLAgentJob.sql delete mode 100644 SQLAgent/02_Test/3_Stored_Procedures/usp_CreateWeeklySchedules.sql delete mode 100644 SQLAgent/02_Test/3_Stored_Procedures/usp_ForceComplete.sql delete mode 100644 SQLAgent/02_Test/3_Stored_Procedures/usp_GenerateJobSchedule.sql delete mode 100644 SQLAgent/02_Test/3_Stored_Procedures/usp_ScheduleJob.sql delete mode 100644 SQLAgent/02_Test/3_Stored_Procedures/usp_ScheduleJobsForMonth.sql delete mode 100644 SQLAgent/02_Test/3_Stored_Procedures/usp_TriggerMissedJobs.sql delete mode 100644 SQLAgent/02_Test/3_Stored_Procedures/usp_UpdateJobStatus_Generic.sql delete mode 100644 SQLAgent/02_Test/4_Job_Maintenance/ActivateOnDemandJob.sql delete mode 100644 SQLAgent/02_Test/4_Job_Maintenance/AddAllJobsToSQLAgent.sql delete mode 100644 SQLAgent/02_Test/4_Job_Maintenance/AddDailyJobSchedule.sql delete mode 100644 SQLAgent/02_Test/4_Job_Maintenance/AddNewJobToSQLAgent.sql delete mode 100644 SQLAgent/02_Test/4_Job_Maintenance/AddWeeklyJobSchedule.sql delete mode 100644 SQLAgent/02_Test/4_Job_Maintenance/DailyJobScheduleLookup.sql delete mode 100644 SQLAgent/02_Test/4_Job_Maintenance/DeactivateJob.sql delete mode 100644 SQLAgent/02_Test/4_Job_Maintenance/DeleteSchedule.sql delete mode 100644 SQLAgent/02_Test/4_Job_Maintenance/DetachDeleteScheduleByName.sql delete mode 100644 SQLAgent/02_Test/4_Job_Maintenance/ForceCompleteJob.sql delete mode 100644 SQLAgent/02_Test/4_Job_Maintenance/GenerateJobScheduleTable.sql delete mode 100644 SQLAgent/02_Test/4_Job_Maintenance/JobInfo.sql delete mode 100644 SQLAgent/02_Test/4_Job_Maintenance/SQLAgentInfo.sql delete mode 100644 SQLAgent/02_Test/4_Job_Maintenance/ScheduleJobsMonthly.sql delete mode 100644 SQLAgent/02_Test/4_Job_Maintenance/TodaysExecution.sql delete mode 100644 SQLAgent/02_Test/4_Job_Maintenance/TriggerMissedJob.sql delete mode 100644 SQLAgent/02_Test/4_PowerShell_Scripts/Backup-SQLAgentJobs.ps1 delete mode 100644 SQLAgent/02_Test/4_PowerShell_Scripts/Execute-RemoteJob.ps1 delete mode 100644 SQLAgent/02_Test/4_PowerShell_Scripts/RCSubmit-Job.ps1 delete mode 100644 SQLAgent/02_Test/5_Deployment/Deploy_DEVL_to_TEST.sql delete mode 100644 SQLAgent/02_Test/5_Deployment/Deploy_TEST_to_PROD.sql delete mode 100644 SQLAgent/02_Test/5_PowerShell_Scripts/Execute-RemoteJob.ps1 delete mode 100644 SQLAgent/02_Test/5_PowerShell_Scripts/RCSubmit-Job.ps1 delete mode 100644 SQLAgent/02_Test/6_Backup_Restore/Backup-Restore-Guide.docx delete mode 100644 SQLAgent/02_Test/6_Backup_Restore/Backup-SQLAgent.ps1 delete mode 100644 SQLAgent/02_Test/6_Backup_Restore/BackupDB.sql delete mode 100644 SQLAgent/02_Test/6_Backup_Restore/Cleanup-SQLAgent.ps1 delete mode 100644 SQLAgent/02_Test/6_Backup_Restore/CleanupSQLAgent.sql delete mode 100644 SQLAgent/02_Test/6_Backup_Restore/Extract_Backup-SQLAgent.ps1 delete mode 100644 SQLAgent/02_Test/6_Backup_Restore/RestoreDB.sql delete mode 100644 SQLAgent/02_Test/6_Backup_Restore/RestoreSQLAgent.sql delete mode 100644 SQLAgent/03_Prod/1_Database_Setup/CreateDB.sql delete mode 100644 SQLAgent/03_Prod/1_Database_Setup/InsertHolidays.sql delete mode 100644 SQLAgent/03_Prod/1_Database_Setup/InsertJobControl.sql delete mode 100644 SQLAgent/03_Prod/1_Database_Setup/InsertJobDependencies.sql delete mode 100644 SQLAgent/03_Prod/2_Functions/fn_GetNextWorkday.sql delete mode 100644 SQLAgent/03_Prod/2_Functions/fn_GetPreviousWorkday.sql delete mode 100644 SQLAgent/03_Prod/2_Stored_Procedures/usp_CheckJobConditions.sql delete mode 100644 SQLAgent/03_Prod/2_Stored_Procedures/usp_CheckJobConditions_Generic.sql delete mode 100644 SQLAgent/03_Prod/2_Stored_Procedures/usp_CreateSQLAgentJob.sql delete mode 100644 SQLAgent/03_Prod/2_Stored_Procedures/usp_ForceComplete.sql delete mode 100644 SQLAgent/03_Prod/2_Stored_Procedures/usp_ScheduleMonthlyJob.sql delete mode 100644 SQLAgent/03_Prod/2_Stored_Procedures/usp_TriggerMissedJobs.sql delete mode 100644 SQLAgent/03_Prod/2_Stored_Procedures/usp_UpdateJobStatus_Generic.sql delete mode 100644 SQLAgent/03_Prod/3_Job_Maintenance/ActivateMonthlyJob.sql delete mode 100644 SQLAgent/03_Prod/3_Job_Maintenance/AddDailyJobs.sql delete mode 100644 SQLAgent/03_Prod/3_Job_Maintenance/AddMonthlyJobs.sql delete mode 100644 SQLAgent/03_Prod/3_Job_Maintenance/AddOneJob.sql delete mode 100644 SQLAgent/03_Prod/3_Job_Maintenance/AddWeeklyJobs.sql delete mode 100644 SQLAgent/03_Prod/3_Job_Maintenance/DailyJobScheduleLookup.sql delete mode 100644 SQLAgent/03_Prod/3_Job_Maintenance/DeactivateMonthlyJob.sql delete mode 100644 SQLAgent/03_Prod/3_Job_Maintenance/DetachDeleteScheduleByName.sql delete mode 100644 SQLAgent/03_Prod/3_Job_Maintenance/ForceCompleteJob.sql delete mode 100644 SQLAgent/03_Prod/3_Job_Maintenance/JobInfo.sql delete mode 100644 SQLAgent/03_Prod/3_Job_Maintenance/SQLAgentInfo.sql delete mode 100644 SQLAgent/03_Prod/3_Job_Maintenance/TodaysExecution.sql delete mode 100644 SQLAgent/03_Prod/3_Job_Maintenance/TriggerMissedJob.sql delete mode 100644 SQLAgent/03_Prod/3_Stored_Procedures/usp_CheckJobConditions.sql delete mode 100644 SQLAgent/03_Prod/3_Stored_Procedures/usp_CheckJobConditions_Generic.sql delete mode 100644 SQLAgent/03_Prod/3_Stored_Procedures/usp_CreateDailyJobSchedule.sql delete mode 100644 SQLAgent/03_Prod/3_Stored_Procedures/usp_CreateSQLAgentJob.sql delete mode 100644 SQLAgent/03_Prod/3_Stored_Procedures/usp_CreateWeeklySchedules.sql delete mode 100644 SQLAgent/03_Prod/3_Stored_Procedures/usp_ForceComplete.sql delete mode 100644 SQLAgent/03_Prod/3_Stored_Procedures/usp_GenerateJobSchedule.sql delete mode 100644 SQLAgent/03_Prod/3_Stored_Procedures/usp_ScheduleJob.sql delete mode 100644 SQLAgent/03_Prod/3_Stored_Procedures/usp_ScheduleJobsForMonth.sql delete mode 100644 SQLAgent/03_Prod/3_Stored_Procedures/usp_TriggerMissedJobs.sql delete mode 100644 SQLAgent/03_Prod/3_Stored_Procedures/usp_UpdateJobStatus_Generic.sql delete mode 100644 SQLAgent/03_Prod/4_Job_Maintenance/ActivateOnDemandJob.sql delete mode 100644 SQLAgent/03_Prod/4_Job_Maintenance/AddAllJobsToSQLAgent.sql delete mode 100644 SQLAgent/03_Prod/4_Job_Maintenance/AddDailyJobSchedule.sql delete mode 100644 SQLAgent/03_Prod/4_Job_Maintenance/AddNewJobToSQLAgent.sql delete mode 100644 SQLAgent/03_Prod/4_Job_Maintenance/AddWeeklyJobSchedule.sql delete mode 100644 SQLAgent/03_Prod/4_Job_Maintenance/DailyJobScheduleLookup.sql delete mode 100644 SQLAgent/03_Prod/4_Job_Maintenance/DeactivateJob.sql delete mode 100644 SQLAgent/03_Prod/4_Job_Maintenance/DeleteSchedule.sql delete mode 100644 SQLAgent/03_Prod/4_Job_Maintenance/DetachDeleteScheduleByName.sql delete mode 100644 SQLAgent/03_Prod/4_Job_Maintenance/ForceCompleteJob.sql delete mode 100644 SQLAgent/03_Prod/4_Job_Maintenance/GenerateJobScheduleTable.sql delete mode 100644 SQLAgent/03_Prod/4_Job_Maintenance/JobInfo.sql delete mode 100644 SQLAgent/03_Prod/4_Job_Maintenance/SQLAgentInfo.sql delete mode 100644 SQLAgent/03_Prod/4_Job_Maintenance/ScheduleJobsMonthly.sql delete mode 100644 SQLAgent/03_Prod/4_Job_Maintenance/TodaysExecution.sql delete mode 100644 SQLAgent/03_Prod/4_Job_Maintenance/TriggerMissedJob.sql delete mode 100644 SQLAgent/03_Prod/4_PowerShell_Scripts/Backup-SQLAgentJobs.ps1 delete mode 100644 SQLAgent/03_Prod/4_PowerShell_Scripts/Execute-RemoteJob.ps1 delete mode 100644 SQLAgent/03_Prod/4_PowerShell_Scripts/RCSubmit-Job.ps1 delete mode 100644 SQLAgent/03_Prod/5_Deployment/Deploy_DEVL_to_TEST.sql delete mode 100644 SQLAgent/03_Prod/5_Deployment/Deploy_TEST_to_PROD.sql delete mode 100644 SQLAgent/03_Prod/5_PowerShell_Scripts/Execute-RemoteJob.ps1 delete mode 100644 SQLAgent/03_Prod/5_PowerShell_Scripts/RCSubmit-Job.ps1 delete mode 100644 SQLAgent/03_Prod/6_Backup_Restore/Backup-Restore-Guide.docx delete mode 100644 SQLAgent/03_Prod/6_Backup_Restore/Backup-SQLAgent.ps1 delete mode 100644 SQLAgent/03_Prod/6_Backup_Restore/BackupDB.sql delete mode 100644 SQLAgent/03_Prod/6_Backup_Restore/Cleanup-SQLAgent.ps1 delete mode 100644 SQLAgent/03_Prod/6_Backup_Restore/CleanupSQLAgent.sql delete mode 100644 SQLAgent/03_Prod/6_Backup_Restore/Extract_Backup-SQLAgent.ps1 delete mode 100644 SQLAgent/03_Prod/6_Backup_Restore/RestoreDB.sql delete mode 100644 SQLAgent/03_Prod/6_Backup_Restore/RestoreSQLAgent.sql delete mode 100644 SQLAgent/DUTASJobSchedule_Configuration_Document_v0.1.docx delete mode 100644 SQLAgent/DUTAS_SQLAgent_Config_v0.2.docx delete mode 100644 SQLAgent/DUTAS_SQLAgent_Config_v0.3.docx 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 671134381d3bdee00daf4aba072c4564be440a4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7678 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 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 66a3d0df472aa724d5c335a7f931dab653eaa6b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2898 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 Y)>Oq&Op$7ob%*FoD3<$juK!c}A1aa!X#fBK 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 0176424e6c98e1bb4af83e9bc4fd7d4fdb8fe9d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4716 zcmb`LZ%-RX5XR?qrGAG~`T|1}5@@PQq>(US2P%S745d|7AutAv03+Lk=F7MJJv$!m z4xhm&)#<#uw>z^l&-~e0|NGCrwXI>9{b?K4wa<1*yKj3|=ld_#w`1Cloilf0x6F3! zFZ6fbma$b-5V(7H9dasSkZ^WCA>1L(d*M5B~Q4ey<{{>b_%P`Cj{kbl4lLw zKCrjr8qx)>J4yQ%x(iLm|6QUh>LRq)L9ISUXqB~neC8<0v~iEGbX#ZCX1>O*vUJSW zY@S)oNn^LjyiM-qn5@J9lE*zh!}k?4Luf}tjXW`9bk0|ycEaeGwHc@gt0BmpF!t!k z?1fzwJpDz|FOYa=2gx#8eAdY%NZyh z=7|#!96>+ecMq**;nM}F#WCF|<$};^8%{$wIZvOf(xRE-L=o*-B{Y$puAx`{kta&a zDtckmMBWSpTFDz9a%$M$$=bJY>m{z6$!4DA<3BJ?@;tsg_ST5{x4$cJX}h|GRY zJZFhUWzmmFr})(45jaG?;`yW)lV#*@8E1+7#!rr?q*jiRqk8pn&HO;o6ceJ^O#twe&Jugy%Td|$wT+CJ3IG5CH4zDU& zbdKyghhHCIK|d#3CEIqH^^>x=TlC8_ToutU2YkSmnH@ z8Z2X_`pWglz&mP8anT-UyvOvkr}BK9;^lfq)#(b<@ltvDh^9T43R|Sy}2Td_2zHl;TzuY-SIuMV$xbb=7rTpfOpYmHjfa-#A5fsm?Z2 zTcb*sttPda#<4>b4UlR*)yZxAQuuAt>WtZ@-=tM`KcuJGgS3-QPahXOHFk-%Y|V$V z&t}=_y0obCbze|@C@spK6f!hfvzHLcSgX@Yr&hjqAdtu9>VtZ2x&+F?Td7i%tyke1 zdmSdsR1fRUSmhxh-{T%IxhjL_F8=)(?m<9*(TEVQpWRoN;&Ug-f+zxL)P&Y?z%q){>o^&&F+GV>bW*gJ>9}|_p0{!uu34I zSa#i}`*P6aKKym@68xfdS%hsBzPg9D(5!*xk43XGqViH?DE|kbiXz`Hmq7nUG)nvD w9#AD!Iez?1%*Zr;_rJndRZF_P{08q<){XX#8UN2F_jH|kixX#FE@|HT4?*N$p#T5? 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 959016bc928b4e36c41816d5b6be2c295b90cbec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3240 zcmd6pYflqF6o$`d6aT}0E2v!67&Rt9TP_A$q(x&4AyA5<*pgmE{=E9Ub2@aET@3M( zm}a{>Gw1rA+x+;xXDzE+X78+uZi6nXnWlWXgQy>mD-d~pe~WXTq7!5;A}^R;Y`*?WSG%l0(e$do)uJwd}D@I~)Z*}`r+AR)xsAh^SOiD!k~ayx~{ zO=qd>^^k9>46oGrNoEvzH^D)E$Wo!7N_k7(D1Q|r?<~{Ik|o7_TP6PTd>4d!d^t{; zIdvN4RFCRKu~Mb1**pG=b~>V>YLOGgNU1_2a`{}A?nNGtWedwXp`Q)$JGG)b!()}~ z5uKQ4e}-z57;8t}Rye6kI#LyUOs%X?vC4II=rOcspwJ_-ZDQwjE+32ak$M-krZK$< zWsg?*X}-duRP{Hnq0B0iT*mN9h7&)$KB$kkYHJY1dfTnzp=qh8B2PyWq>GJtHjrNw|5qokT1=+3+=M%3|nh(FO z;Ha~_>)e#dQDa72)k!0kn((?WtDE%rR_=R+9Fgsw2WQZG1($nY>{ijn*tN>=`4?VR jxkvboRrg(W%iDUZZmql!3S+#z-jSys6+3g>nd0yhnDx0n 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 671134381d3bdee00daf4aba072c4564be440a4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7678 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 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 66a3d0df472aa724d5c335a7f931dab653eaa6b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2898 zcmbW3YfqXn6vxl&CHoG22X5YXOSUXg0hL9;Da;p(F(BR*77*RO{I=h}rJ)Z#5H;kX z?P<^be@^@FZ_^H}V$ObA*-q`=ZWx=^uyyF)tY>Y;6T4uqV?%aN?Z{r+E8DWVAD8S+ z@^etzcEza^yR*;8b@1OIr|%`~G4|LC(nOQy4m>^NE;1k5z<$}WZF(M^EHS%@ zM_y`>e1g17_U@pSt>yQnb;Xu#$=>s=GF!C|&^}?$s(s}D9W;lByZootFL{p?kA~l` zVS5!@YD8p*-vQJ*tJME^`a5Up@Kvzm7_Kt28tW>aRGIJR@Jh~P{C4rMZ|D4X;7DWV z>~Zwu>n?tGiCc>Z$-a9pL2>CY%k!{=H5L4qwc?O%>-eX&=KAe1s}p<_Cl^bpantV-U3h858+JjLB2 z_9@!JQl!mU(3$F5umw&u@m=zTd&l>itPWURlJRpWSLkn#c2sjizt>~e5h+m=F(K*F z&iubBWh`fq@wG|TqfHJjRpsI+YZY{7HEfS;kp}snS|8&p{K|S&wKK(~Fr%^y6SajcQ`d`xArH%))+G{K|C`OTNI?t5aW(+U~tfQrjeCCIAB za?*$%QYETR;V$&$aUBGoCaEcR^kf~JmyxhfM!L)*vVw#$nrHE5bE?X6pj>%v;g7m> zht)jP!bndSy6{>6`_qtK_4w?9I3c%Z4~!2;6mEt|6?D90$s3@l54Ieq9P3lhlcGNL zLVZ}7U&E%l9a5j;s+af68T{sVjTlAwEQIfqLFao*18L8%m|{j}lpe=yJ{8Yw)$ccaf(YsS2#DWL#@-uM166bR&C;&+*3{E(Ic|7Hy!tRR)p>yZHc3zy~9`X5zpg` zCns+iS&;T=t)CjTm-MP=hq}`2PLo&h;+fqCqWn#dW4&OqeOj-jF4Oqbk)8+FE`bj-7TIF+auh$>ArRv7g> z&78gEo6K{dYWHH)HQHXcZo*q%5!c=lbqn>BGj#W{DZI0EPo{57hsC 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 0176424e6c98e1bb4af83e9bc4fd7d4fdb8fe9d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4716 zcmb`LZ%-RX5XR?qrGAG~`T|1}5@@PQq>(US2P%S745d|7AutAv03+Lk=F7MJJv$!m z4xhm&)#<#uw>z^l&-~e0|NGCrwXI>9{b?K4wa<1*yKj3|=ld_#w`1Cloilf0x6F3! zFZ6fbma$b-5V(7H9dasSkZ^WCA>1L(d*M5B~Q4ey<{{>b_%P`Cj{kbl4lLw zKCrjr8qx)>J4yQ%x(iLm|6QUh>LRq)L9ISUXqB~neC8<0v~iEGbX#ZCX1>O*vUJSW zY@S)oNn^LjyiM-qn5@J9lE*zh!}k?4Luf}tjXW`9bk0|ycEaeGwHc@gt0BmpF!t!k z?1fzwJpDz|FOYa=2gx#8eAdY%NZyh z=7|#!96>+ecMq**;nM}F#WCF|<$};^8%{$wIZvOf(xRE-L=o*-B{Y$puAx`{kta&a zDtckmMBWSpTFDz9a%$M$$=bJY>m{z6$!4DA<3BJ?@;tsg_ST5{x4$cJX}h|GRY zJZFhUWzmmFr})(45jaG?;`yW)lV#*@8E1+7#!rr?q*jiRqk8pn&HO;o6ceJ^O#twe&Jugy%Td|$wT+CJ3IG5CH4zDU& zbdKyghhHCIK|d#3CEIqH^^>x=TlC8_ToutU2YkSmnH@ z8Z2X_`pWglz&mP8anT-UyvOvkr}BK9;^lfq)#(b<@ltvDh^9T43R|Sy}2Td_2zHl;TzuY-SIuMV$xbb=7rTpfOpYmHjfa-#A5fsm?Z2 zTcb*sttPda#<4>b4UlR*)yZxAQuuAt>WtZ@-=tM`KcuJGgS3-QPahXOHFk-%Y|V$V z&t}=_y0obCbze|@C@spK6f!hfvzHLcSgX@Yr&hjqAdtu9>VtZ2x&+F?Td7i%tyke1 zdmSdsR1fRUSmhxh-{T%IxhjL_F8=)(?m<9*(TEVQpWRoN;&Ug-f+zxL)P&Y?z%q){>o^&&F+GV>bW*gJ>9}|_p0{!uu34I zSa#i}`*P6aKKym@68xfdS%hsBzPg9D(5!*xk43XGqViH?DE|kbiXz`Hmq7nUG)nvD w9#AD!Iez?1%*Zr;_rJndRZF_P{08q<){XX#8UN2F_jH|kixX#FE@|HT4?*N$p#T5? 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 959016bc928b4e36c41816d5b6be2c295b90cbec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3240 zcmd6pYflqF6o$`d6aT}0E2v!67&Rt9TP_A$q(x&4AyA5<*pgmE{=E9Ub2@aET@3M( zm}a{>Gw1rA+x+;xXDzE+X78+uZi6nXnWlWXgQy>mD-d~pe~WXTq7!5;A}^R;Y`*?WSG%l0(e$do)uJwd}D@I~)Z*}`r+AR)xsAh^SOiD!k~ayx~{ zO=qd>^^k9>46oGrNoEvzH^D)E$Wo!7N_k7(D1Q|r?<~{Ik|o7_TP6PTd>4d!d^t{; zIdvN4RFCRKu~Mb1**pG=b~>V>YLOGgNU1_2a`{}A?nNGtWedwXp`Q)$JGG)b!()}~ z5uKQ4e}-z57;8t}Rye6kI#LyUOs%X?vC4II=rOcspwJ_-ZDQwjE+32ak$M-krZK$< zWsg?*X}-duRP{Hnq0B0iT*mN9h7&)$KB$kkYHJY1dfTnzp=qh8B2PyWq>GJtHjrNw|5qokT1=+3+=M%3|nh(FO z;Ha~_>)e#dQDa72)k!0kn((?WtDE%rR_=R+9Fgsw2WQZG1($nY>{ijn*tN>=`4?VR jxkvboRrg(W%iDUZZmql!3S+#z-jSys6+3g>nd0yhnDx0n 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 c19787a33821ae28e918806171ae43462dc07c92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12387 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]', '_') - $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 42f3b014d8c2a5ef4401403dc3f88727aac7cad2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7678 zcmd^ETW=dh6h6;L{D*n718ou)c%dLU@g+&y*d}o(2%#vxq)nRIkuO~SJn(&Ua=J6S zv+*jF3W}_~d1uc3^3Cj@f1Jswbi~O|GL)$-WhHGn!~Guqe$Su#{bB9f;n^0-NyYIGTh3! zv^>wTyt$L2g%LB1yaKf=f4{^G(pMg1P`<*<6`tF2f$P-sZ^*9f$d@>t;O>chh4&4- zX~-A;%;$j|;~eU-<8`BDhIq3lJ!o+Rsd})@3;a&;Zy!&gC2aI}7}LkR4&*q;tTyg? zcs`OYj*grp=8{eeZ#v+`nWWBfd*H=q-rH}0r#?oL{+XZi_iRYsM!R`u?H(-n)_doB z$Z!H~hyGfJ{dQ$b9(m2PSuKp8VcZ&LC;QNocI*2{8u)X5#xbZb@w<>$Nj~%zImJ{c zD z);WcZXsJ5R9e9DhpsyM@y6{Nf=cQJM?HrF-56bZpT$w5KWBk_Yf!eeQ9;U-q6vyd^ zGQU}5F-F2@r=NCnJ}%D5$2(`$0!e7!YSyfk@S^5JUlDq_5v)J$LhP%D58$;GWVwb- zM!3?8E9iFxKQ1Hd6yrAE87A-}=PqzAX3nN8$WvP&r`Scb+B?ZtB35>b`7pxbSPI{m zSDKJB?rCYs>7#3m+^#e}u5jhN@_LnXiARQ-6thEnwRXuBJishh>BD(pj;LljFRS;I zrq~780o(7a!8&5T`33Q!dDXa!x{#k{dsTb0A~TmT9cX+NDB^ndQs+**DOjnqNYyAKnkK{F$y+ zFGsLEeWO^is-=ibYdAi~k@fOw_8=-_oW}LYDv{;AT_0AJL+`VrGM8_?j;znb&%{pD zdQ*)i;?~|A&dO(ftc#(%A}YxDfU!qQv>}n`DLOWh>I;v(h+WyoX{{lUaM!`8-&jNCG-nQw`(hmeK! zqKf>*sG${)Jia51CU_93kn_2Z4Ps}mL$#0WMxMC8;^gD8OhUyaD_DUTD8=CDM`3<&XCKwJq zMAp$Sti4>Xaj)Zb(lX2&<`paAGuV*N#Mj*G*p7BJV!WnnRikVpV}zE%ZYfWO^-Cp9 z(<}2{T=P;KXhExP#zFT1%2!<}I_wg z!D|=38W_S`z{|4|Pjby#W}`5Uv)Wz6uqM_070pIHWVKnGn_hL6S>zg#IfAA&|5J2S zrga<{I@ac;EgS9~lwoDlfO|51c$aH=>s{(`q6)(ox>IKFQ&DB~%2Ak&NUxFY?fsF& zdcgHEQJO~449_#{Y^7u}WS;gy98IigHRJ>%(`eR`R6qWx(*2QgTYp?Jb&2Z4m?Cy} z@+mjS;Wm#YBxV3i@{a@p9lc!=__TP-szK=fc@5XqP7?t|z z>boz`@xtIcx<5R$PlbADZ`r%+A7j`j|DDVEZxE|U`}^>L?Zlbv+1NB5sKT4;PGT}e2xIu1 z>m2QN7Slzoy1ozUHvxX@xrE1GAvzc_tZQ{pnF@E$7+H)Wt_K#Lw(SF|_Sv_hI0~$r z<~92_?IoT;pEo$>sN=MnRSasXUn$dG*IhsT`ob@tw3wk)&It2}IEiZ#QskcG4OS=S L7mI@|hV||*yL}Q$ 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 d009605de7d6a451d246d38f1fb1b3a3b87f80dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5152 zcmeI0?N1Xy5XR@TiT}fWYcoifNenxv{+j;F~*b@5ye7iiTcm0zh}3T-f_zb z#waG{a^1asnVos&nVE&}-}?64T9(;s>)D=7Y-&yG(_dr!sU6ua?a^C$vj;GxubS?%D@d4UzN!xf%PX$TEu+yu^A=diGFdM>*1$sF>hJK|!H=@LAJ+a}UkfAm_v(x# zZ9M%cu<8Z6bUFP=XzO@)*=_{?h}qiv7|k~DK=hhRa<8?6?j1CjucCJ!hJE>S<;w;( z>nx$L%GUr!cH!}u@5jjR*+Q7vMz0Ca!1j|GijUGUp5pqHPdFQoqYz;O_&(*VgPHx} z*ETwpb-rb{&_{Y6@?@+ZuuIwwOEIP~#lGS&Z+FXH1@Hp^ZiQ3KE$**~P!T&} z--AW^O(U3Jah{#Z5Xu3QnI)dZMqzA!ZG!U-dXwEH~5X1`#)II%D!ybhB(AsfXUxmd`CQ}jGS&-{*;FkbN|HWo3?Od6a;zKomlQklux zyIeRa9Y4-nMZaPzB2?sl`Apvxxw#4A6Z{rEvmW@V$|Il2;?J}P_AdO&cO%9WTVtyQ zUy9kPEdyr0GQVeESg+caN6OEP_A1_`tC+ospL)ER)ss7XXORc09OwC~g$9bE)4(%T zvL`c*#I>)Lr(D*fDH~m5wQG2#NgH#N*T%?>2D7rgPG(fCYx1ppUMDYUr!eucm`(GN z)lZLBbH!zdFT%9Tnc0jz9ePFX{|rlct;l?3kD|32xkxO=b;=Uckm2;*!ee6L32~Xv z=xNK{Hr1moa#<^2STDt)Bwr4F?YLO((aIX!RGyD)T>naUBMyvT1Yh&4C3zatlmt9?P{l7d_ QTK>D0c8-DH^5#|Y2gQZ1+yDRo 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 f6702a89e4615b90e6ca355f86c2dbada44a320d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18746 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 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 3b107b2cce78fb2fef7c22f6030774eb0c4d7020..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2898 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 Y)>Oq&Op$7ob%*FoD3<$juK!c}A1aa!X#fBK 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 53496ac83303ef5e9c3a649694efa97fb9919021..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4716 zcmb`LZBH9V5Xa|rrGAG~`T|1}2sBkC(nuIEfr{W1Lupl2hzExU0Y-iZ&6jWc`|o(T zJNs;mQk~Abd%H6`^Ph*E^}qidTFV-i*`Ib`ZR=UzHtmppo$tR`$4+U_?2@^28`ur) zU-qqiWACk*+9g{kJQ-h4?V43*a9V|L27Mns-NfM|ZHGDMrf=H$9GVV%7wHd>;ogps zplerl!PBPqfqsuibS_no_2TY3oTb(G?35w@32i&=zHF~;$=>j;&|9$|ng5BIA9z+7 zy*Mb#?aASpARuHd!UUhiUECAg3Jzy)`&??F&2ycE{Is40qqT=ezH?obv_{|Pm?_B z==Pqy9oLX9aNSGVH_=^aI{t4HT~QaIy#Z?VAwp}c?cg&fNv6$5e5Kn4qZacuc9o@L zwr2CpYEBxvMdodMFUMp9{x>}C@fp6anCU^=Cu-!08KXxCDMOgJf?wqkl zM`kbVw&3Y6l74~2TRTdY*@n6*9zy0?i7Kdt<8DGn=oK-G713TJ+u|_F_R!!K`CiUI zF`6gNL9h>fm)`@lnuSjrq!x#C{gewrt6exLJ2_9EtI}dC#fc)?vr1?pJKaIA{3B14 zmR0n^XbX8W5NIZE9Ocxozmv5GaJx!ex0B60%gOhZ|1K-J2gb@CE8rFAk$Qa-nlAMne^+BilxM<)M&m2h8g!g0F~j`K@P#Dr(7*OCcYc#UnEN zIq{q&8kI#qAf4h^g^EpI|{hCz~bPwwd*lvbbCH%QNLs+16e+MV@(yXU!6yTK81$)tP-j>}2-c zV|Au;w_L*&EtGpy)k!w#tZm^Fom6M&Y*lpM3^T8yRB`jb?-!y(QmZaeRAj9A#BZ_6 zc}F!^#!B^->yd$X)R^L;JuY}p>1j{p`8dVP^^B_1Rj6J5uu$0w3()4;Ps7WrKvguV z|JLmferK`RB=nkK;k8*=>MDFZ&R&<|Ruyb!qt&9$gYvrSIxf%{uh7bVnb~igBKuTl z+o`QlrOQ_1T2113Mih0CY9rOjE&NjW?b7Ou*`>cltL%PEPqRm9C!L-?E_!P05^dR< zqq5It*~z*zsq=MTP<<#Z%AOQ5Y_aAbA(XLJr&{r^AtB#%4;WvS!E+z~o`!o+mE*LWVXpA-3nVMn&~dWrE;`5iJ#RG{ zvBRWRIO}#H{yif7l+!6{Ouw_LKJ|L{czB*`uWRzfDZX~coYy3ZndiwMpOAk(jZ==j z-*DVdo{#Jn(q5&E=k=6w-e}%%&88vicnf#k9|M17G~H(RK}Gdki>ID$VY+)&`+Qg> zkWehUZj*gEXmTI^x_AkG(Yh?cwhCX}Lz`&UK=WzQtc<9<6dB6@0jQ$L_sb>FzY&en y{<#NKNmY&?KNB-DjoY{Q!2 zzhDoNCu8-mq!c?Wg|zx^P|rFFtuAIc0{oP#u3vPE04C%nsymhCBP&(Lw%o`>&a=BxIG zZ)(v(uu>Sc!+ryMwvgXI!)=}xt4(GpCh_!J&NQK`qsIYMHAW5QTei+yx7`w2@u{*? zM;B3wyUwj5OLL8P_%=BuzI);9zd}*cg`%F7G42g8{1!a*4lQ<(yBYp7Ah>9=_9)ms zp{m<=d@|%*4-d-2Tfu7aR#fS~hVC0-J(U=7YXs|>*e0|b-GEjYoxu)aEN{lOS#uUmhXaamyzR? znV(L*oXSzY$XCjgHT%G~sHfYnQ!Qem=qY7rL@po8lD)|5zHFgcC)BeG>`t{PkMNi! zdw3_t+25fWImX;kwG~dPl8#gb8&fSSWUOLc6?(+kb5Q8w**3oOJeQ5d{79{fQd6Ja zgtB|9d^ewAk*n&P=TK&qajazM+e5#8=t1fV$7p$xv+R`FInNbTdCsc4wVZ#HEy65% zavdbjpdAspC%KdVlP9B=vi?u~DDRi~GNNAx0d?sCy-+uT3y}H5C`Qu`dzZ`y;HP_m z5SJ&?zI!@G)4g;FvZ{7o-86P@synDNS9l-tPO7ultbFEqbmM^4Jn>091l>dZ|&KwZ9zM-?%OgB1JQRQY_KMt#fhh&4Hnf^=7f^Nv?3jfdZ7 zaFkhIb#98}C^5sYs-zK1b$H#ERZY5#75kncMCIBysfpW)`|1czUtthrMF 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 42f3b014d8c2a5ef4401403dc3f88727aac7cad2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7678 zcmd^ETW=dh6h6;L{D*n718ou)c%dLU@g+&y*d}o(2%#vxq)nRIkuO~SJn(&Ua=J6S zv+*jF3W}_~d1uc3^3Cj@f1Jswbi~O|GL)$-WhHGn!~Guqe$Su#{bB9f;n^0-NyYIGTh3! zv^>wTyt$L2g%LB1yaKf=f4{^G(pMg1P`<*<6`tF2f$P-sZ^*9f$d@>t;O>chh4&4- zX~-A;%;$j|;~eU-<8`BDhIq3lJ!o+Rsd})@3;a&;Zy!&gC2aI}7}LkR4&*q;tTyg? zcs`OYj*grp=8{eeZ#v+`nWWBfd*H=q-rH}0r#?oL{+XZi_iRYsM!R`u?H(-n)_doB z$Z!H~hyGfJ{dQ$b9(m2PSuKp8VcZ&LC;QNocI*2{8u)X5#xbZb@w<>$Nj~%zImJ{c zD z);WcZXsJ5R9e9DhpsyM@y6{Nf=cQJM?HrF-56bZpT$w5KWBk_Yf!eeQ9;U-q6vyd^ zGQU}5F-F2@r=NCnJ}%D5$2(`$0!e7!YSyfk@S^5JUlDq_5v)J$LhP%D58$;GWVwb- zM!3?8E9iFxKQ1Hd6yrAE87A-}=PqzAX3nN8$WvP&r`Scb+B?ZtB35>b`7pxbSPI{m zSDKJB?rCYs>7#3m+^#e}u5jhN@_LnXiARQ-6thEnwRXuBJishh>BD(pj;LljFRS;I zrq~780o(7a!8&5T`33Q!dDXa!x{#k{dsTb0A~TmT9cX+NDB^ndQs+**DOjnqNYyAKnkK{F$y+ zFGsLEeWO^is-=ibYdAi~k@fOw_8=-_oW}LYDv{;AT_0AJL+`VrGM8_?j;znb&%{pD zdQ*)i;?~|A&dO(ftc#(%A}YxDfU!qQv>}n`DLOWh>I;v(h+WyoX{{lUaM!`8-&jNCG-nQw`(hmeK! zqKf>*sG${)Jia51CU_93kn_2Z4Ps}mL$#0WMxMC8;^gD8OhUyaD_DUTD8=CDM`3<&XCKwJq zMAp$Sti4>Xaj)Zb(lX2&<`paAGuV*N#Mj*G*p7BJV!WnnRikVpV}zE%ZYfWO^-Cp9 z(<}2{T=P;KXhExP#zFT1%2!<}I_wg z!D|=38W_S`z{|4|Pjby#W}`5Uv)Wz6uqM_070pIHWVKnGn_hL6S>zg#IfAA&|5J2S zrga<{I@ac;EgS9~lwoDlfO|51c$aH=>s{(`q6)(ox>IKFQ&DB~%2Ak&NUxFY?fsF& zdcgHEQJO~449_#{Y^7u}WS;gy98IigHRJ>%(`eR`R6qWx(*2QgTYp?Jb&2Z4m?Cy} z@+mjS;Wm#YBxV3i@{a@p9lc!=__TP-szK=fc@5XqP7?t|z z>boz`@xtIcx<5R$PlbADZ`r%+A7j`j|DDVEZxE|U`}^>L?Zlbv+1NB5sKT4;PGT}e2xIu1 z>m2QN7Slzoy1ozUHvxX@xrE1GAvzc_tZQ{pnF@E$7+H)Wt_K#Lw(SF|_Sv_hI0~$r z<~92_?IoT;pEo$>sN=MnRSasXUn$dG*IhsT`ob@tw3wk)&It2}IEiZ#QskcG4OS=S L7mI@|hV||*yL}Q$ 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 d009605de7d6a451d246d38f1fb1b3a3b87f80dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5152 zcmeI0?N1Xy5XR@TiT}fWYcoifNenxv{+j;F~*b@5ye7iiTcm0zh}3T-f_zb z#waG{a^1asnVos&nVE&}-}?64T9(;s>)D=7Y-&yG(_dr!sU6ua?a^C$vj;GxubS?%D@d4UzN!xf%PX$TEu+yu^A=diGFdM>*1$sF>hJK|!H=@LAJ+a}UkfAm_v(x# zZ9M%cu<8Z6bUFP=XzO@)*=_{?h}qiv7|k~DK=hhRa<8?6?j1CjucCJ!hJE>S<;w;( z>nx$L%GUr!cH!}u@5jjR*+Q7vMz0Ca!1j|GijUGUp5pqHPdFQoqYz;O_&(*VgPHx} z*ETwpb-rb{&_{Y6@?@+ZuuIwwOEIP~#lGS&Z+FXH1@Hp^ZiQ3KE$**~P!T&} z--AW^O(U3Jah{#Z5Xu3QnI)dZMqzA!ZG!U-dXwEH~5X1`#)II%D!ybhB(AsfXUxmd`CQ}jGS&-{*;FkbN|HWo3?Od6a;zKomlQklux zyIeRa9Y4-nMZaPzB2?sl`Apvxxw#4A6Z{rEvmW@V$|Il2;?J}P_AdO&cO%9WTVtyQ zUy9kPEdyr0GQVeESg+caN6OEP_A1_`tC+ospL)ER)ss7XXORc09OwC~g$9bE)4(%T zvL`c*#I>)Lr(D*fDH~m5wQG2#NgH#N*T%?>2D7rgPG(fCYx1ppUMDYUr!eucm`(GN z)lZLBbH!zdFT%9Tnc0jz9ePFX{|rlct;l?3kD|32xkxO=b;=Uckm2;*!ee6L32~Xv z=xNK{Hr1moa#<^2STDt)Bwr4F?YLO((aIX!RGyD)T>naUBMyvT1Yh&4C3zatlmt9?P{l7d_ QTK>D0c8-DH^5#|Y2gQZ1+yDRo 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 cfba9e97d466c75b1b57e4f4669c1449e6054924..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12616 zcmdU0ZBN@)6uzG)?LS!6CO{jg3EecU>y!jiN(Tu|Lf2`XA_y;|1HuTwa^O-RJHzx8}NXVWVKo+ECLwGFzi@Y~~g1RQohdsM6**BqYw8=pCmQy<^{ib`yC zig7{kHbD#Vw;;zg(AY^)V_NKpq`Qzabry6^evI=y94~Mj!~Vk+jEJ$QvksnV6B=zT5;6|M~Z2m`w}lm_c7ujDL=(G z^W&B1l)sq)nJ+_KSaxXSAbZcFrdsHOdh)Rc z4vuk5Xa6FMc0I&wwv@#@08~b=4~N+-H;Z`-{?B}VcbGK>+|F*o9Gk$-G|Pti_I4aT z>+|vLEheTviwjvPzILx6!LCG#MZ`r`j?7=1s4sQRYux(+Pi?`fXiru_@cKJwe+1iN zHNe&T@QbnhQu|wi1SY5wZf18e`itzZjDA+W15o}c&|hT5W%P5+>OIk4?h95kCGHLM zy^Cm69uw_(wTg7SW=`IcI-cFte6AB>_F^@`zwn&Dnd#|Up?_%>>WdXJ&KqTu)Kj4s zYAsub-CJ!=AM5~r54O$hM6dY@pKQI8t|9U;!+OqOZo?&i%LR$D{w4UIP&p*W-X3WGr06j*3JYt8mTI?!18mA8gOV%Gk zTvf7C2wLl;skCbzmsycfm6xdRpeWH8N7N59LfCV&)_Mm?UEpfEw@!P8;pH(8V<2mH zL=T)@FxG2tu9edOQDF_&23V_i=cUhJokMtf&0;}_%g)K~20kl*!OE$Nh?5{MX+@Uh zfD*{^6_W^|KShk_B3pWYQJrSjr#;c=;!&$Cond6{ft1|bgLH1TinSWQR$N|}0cM(A;uRJe4u7+Coy(s;n2VIAEO}^QubS~Qze_DtATQ?nBtNEBQX@XqB z*=VdcR4p-&#XUvm71n=Ky0jWrc+86f3IKg~Wd#FgXgY{V!~i(*gD6^vuAtul(eg~p`7N%jt;vWH`q zx^hVv6^$GZ%plKUEiD{rqh-{2C>N5MEqW2g24K)@b?P!JoLRLJ_v!e2$f#5s4=4Xt z8OM0^k}sN1Q{z=yd4p)YTOq~9v_2og`@-5bTgS$yo5o!O_RsaZQW3GO!nIZ6)7R^F*mxFsQ13=<;+z)JS9N$;@!Tkt1KP=T^eAcTyhD98+?E^?s>u}Qh z7U#NW!AeATa=yedJO9=E7o*TJc1+{hzOg2C!isbg?0PuI%Xd7?J_FdBY9k(x@6z9W zrx)YFdrG;ct1Q#7#B8xjBGg7XZL9-!;m6FhtV>TITk~LMbncl}L!k}$PSeG%E&%whkGRxi!{;U(UyziKP{A{htgUVt< zT6(vQ5H>@qqUim7`V3w)mN=k$Ub?e%_ujo+;N5ZjeTli8j4nsx^nLqs{oZ|fS$sL{ z({&zXdmR?ZDM?nBoRI#X>VUiSY(L?y@}n}(zN@TnQ_Lz_?kDTluCu=8e4l-NWt*-Y zV!77xcmuJ8)rMugS@M1{UW4-K=J@4%iwk^%%)b#}m6AqtX1E=xmiVqfShE$)Y;M;L zTn4*G!|ST8+)k9@qOPyXS3HNTY%SCK4zhMHonl-LX2qIsy;ps>ez6IO&;t0Lg|DL3 zHrUg1HgJqPeDCF4rXJ_ftb04FNcYVluJY-ab^q^g8=k9d^~brzyv#LJ1`GIo|1*WO zY(A#FtjInQXEg)Z1840wnWCq6I5dOv4P@KJ$WHWhZ(|Pc8gshLuFlWF(mCb;^$T}P z`7RcByE#`mmsPsLzrPh?E1G$EyqvAY^&RJhKFWz8dpPbDus-!2@MNZG3@1NjJs9ub ztgg#*p_Aa)Zi%0}>pNcq^n1^u-flHE_u|wJXdU*x^DHy8E@mVfn51(L<|lAvaQbqE zZ@ic9%H(%p+tB(sW{DG-$L8N*^=}31ti`{pIm9ZyX-M4Mr{(T!T=PX(JFq-Xfou 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 3b107b2cce78fb2fef7c22f6030774eb0c4d7020..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2898 zcmbW3YfqXn6vxl&CHoG22X5YXOSUWl0hL9;Da;p(F{OG6)gFlxv{ z+tZ%=|D5*U-?r^p&7A$TmL1uR-CEV!%*)Wf+0eR-Jv(KuZzH>8Jh0dH$~LU&$0d7{ z{2bJ-opY*(q|eB8@ZTcm+Dq7B9I_Xri6+f`c!tPbWIn=%Uv_Bgo<}Du%&wqG_buOn zml`DZkax!3Ewrk2{JylV*s?9zd%jg>tM&ofC+u0ZkNm%b=J0Tv|J3>=?~&rs^7{>J zuVYJth-~rOgW6=3`X5h!=S&m68g?AQRb|#-UB{C;^W7X?$(fGdHXdHv3IBaK(%3nB z7(MyAjo$;})*(W&@6Jn5T>8xNJgi_%4gY1WIAmKH|FqUzza3^xVlRK%{`^ZaB@cr< zXQeTo8d!SeE&GAiU36^vu}GGdZO-O>d?#E@@~fCAyTZ|Ieq~(}q*eIUxP}KCWFTZM zN{v}-cpsa1s9c5Ye#z)hJy1?7#7R~wawT|%M7d*sSXH5ih<;^N@fNhKh<4#A?iR66 z(H52>ZO($uRM&znaH5Uxk}uplzTae3HF`$IPoSKmzdPPh&5iutkX=WlL{Y?qq%%AA z|EiRUoSTfVZL%J1a&W0C7spwvp*yQ#b8L$=$p6&(7+>L6)~l+WDK3RaD!VY1`@SDwhV=B*S*iLB>iDvP~Y`eUaF9zD!&zLc`>iJ?wwWT+1+&c>A>s~*Zp zBf3wOs5*ta(3dB55PX`Zrrgn!GB~dyVV8^ym_=j-2@^Cw#+%KlD$9X#<+X!9>e78y z^H2+8Jp<^%YXR)fLVDffa{%Im+@akw-Xl@C86{QF_mU;=22Iys%W=xFKJq*%>QgV& zhn4vfHZ^UZ`kYj~ykE}XH@|DdD9UFce3uM5-&$Nl>`>LT!cJpHO++LEs z5%sRAdbz3Wa9@QN${qC{-X6zPrTRe^O!n*odvu5EUoT3>Jlls;iF$#k(o|!GanIAt z*;~HpJO`?FPsd%O>viiUyz&)s;Vn_OP)|8V_cb 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 53496ac83303ef5e9c3a649694efa97fb9919021..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4716 zcmb`LZBH9V5Xa|rrGAG~`T|1}2sBkC(nuIEfr{W1Lupl2hzExU0Y-iZ&6jWc`|o(T zJNs;mQk~Abd%H6`^Ph*E^}qidTFV-i*`Ib`ZR=UzHtmppo$tR`$4+U_?2@^28`ur) zU-qqiWACk*+9g{kJQ-h4?V43*a9V|L27Mns-NfM|ZHGDMrf=H$9GVV%7wHd>;ogps zplerl!PBPqfqsuibS_no_2TY3oTb(G?35w@32i&=zHF~;$=>j;&|9$|ng5BIA9z+7 zy*Mb#?aASpARuHd!UUhiUECAg3Jzy)`&??F&2ycE{Is40qqT=ezH?obv_{|Pm?_B z==Pqy9oLX9aNSGVH_=^aI{t4HT~QaIy#Z?VAwp}c?cg&fNv6$5e5Kn4qZacuc9o@L zwr2CpYEBxvMdodMFUMp9{x>}C@fp6anCU^=Cu-!08KXxCDMOgJf?wqkl zM`kbVw&3Y6l74~2TRTdY*@n6*9zy0?i7Kdt<8DGn=oK-G713TJ+u|_F_R!!K`CiUI zF`6gNL9h>fm)`@lnuSjrq!x#C{gewrt6exLJ2_9EtI}dC#fc)?vr1?pJKaIA{3B14 zmR0n^XbX8W5NIZE9Ocxozmv5GaJx!ex0B60%gOhZ|1K-J2gb@CE8rFAk$Qa-nlAMne^+BilxM<)M&m2h8g!g0F~j`K@P#Dr(7*OCcYc#UnEN zIq{q&8kI#qAf4h^g^EpI|{hCz~bPwwd*lvbbCH%QNLs+16e+MV@(yXU!6yTK81$)tP-j>}2-c zV|Au;w_L*&EtGpy)k!w#tZm^Fom6M&Y*lpM3^T8yRB`jb?-!y(QmZaeRAj9A#BZ_6 zc}F!^#!B^->yd$X)R^L;JuY}p>1j{p`8dVP^^B_1Rj6J5uu$0w3()4;Ps7WrKvguV z|JLmferK`RB=nkK;k8*=>MDFZ&R&<|Ruyb!qt&9$gYvrSIxf%{uh7bVnb~igBKuTl z+o`QlrOQ_1T2113Mih0CY9rOjE&NjW?b7Ou*`>cltL%PEPqRm9C!L-?E_!P05^dR< zqq5It*~z*zsq=MTP<<#Z%AOQ5Y_aAbA(XLJr&{r^AtB#%4;WvS!E+z~o`!o+mE*LWVXpA-3nVMn&~dWrE;`5iJ#RG{ zvBRWRIO}#H{yif7l+!6{Ouw_LKJ|L{czB*`uWRzfDZX~coYy3ZndiwMpOAk(jZ==j z-*DVdo{#Jn(q5&E=k=6w-e}%%&88vicnf#k9|M17G~H(RK}Gdki>ID$VY+)&`+Qg> zkWehUZj*gEXmTI^x_AkG(Yh?cwhCX}Lz`&UK=WzQtc<9<6dB6@0jQ$L_sb>FzY&en y{<#NKNmY&?KNB-DjoY{Q!2 zzhDoNCu8-mq!c?Wg|zx^P|rFFtuAIc0{oP#u3vPE04C%nsymhCBP&(Lw%o`>&a=BxIG zZ)(v(uu>Sc!+ryMwvgXI!)=}xt4(GpCh_!J&NQK`qsIYMHAW5QTei+yx7`w2@u{*? zM;B3wyUwj5OLL8P_%=BuzI);9zd}*cg`%F7G42g8{1!a*4lQ<(yBYp7Ah>9=_9)ms zp{m<=d@|%*4-d-2Tfu7aR#fS~hVC0-J(U=7YXs|>*e0|b-GEjYoxu)aEN{lOS#uUmhXaamyzR? znV(L*oXSzY$XCjgHT%G~sHfYnQ!Qem=qY7rL@po8lD)|5zHFgcC)BeG>`t{PkMNi! zdw3_t+25fWImX;kwG~dPl8#gb8&fSSWUOLc6?(+kb5Q8w**3oOJeQ5d{79{fQd6Ja zgtB|9d^ewAk*n&P=TK&qajazM+e5#8=t1fV$7p$xv+R`FInNbTdCsc4wVZ#HEy65% zavdbjpdAspC%KdVlP9B=vi?u~DDRi~GNNAx0d?sCy-+uT3y}H5C`Qu`dzZ`y;HP_m z5SJ&?zI!@G)4g;FvZ{7o-86P@synDNS9l-tPO7ultbFEqbmM^4Jn>091l>dZ|&KwZ9zM-?%OgB1JQRQY_KMt#fhh&4Hnf^=7f^Nv?3jfdZ7 zaFkhIb#98}C^5sYs-zK1b$H#ERZY5#75kncMCIBysfpW)`|1czUtthrMF 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 c19787a33821ae28e918806171ae43462dc07c92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12387 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]', '_') - $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 60e84142bb44a502845adf5e75707ce7faed32fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7678 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 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 cbd414213e669662dc83fce91bc5716bc47fd91b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2898 zcmbW3*-l$A5QgWvQs2RM2`zg!sa2&w5+D^M6iB(K5X!<1p$Y`rmv8(1_Oaps!s*wr4BQzp?Hz_UzP-*csU+VG`_oii=?>ez7zSB+VdbpuZt%y$ZSC1)~zTX;CM6aM>fq_J~Z zhSKQC*Dd@W5VsByl6`kxg5uI=R^(w7YwGwfYsDekR`5@2&Gp-6)*|-ur|r+bBvbM* z$a7Z7@YKZ8D{t8kwC*G7-YLQ>XMA;RNrt>T7k|3?Zuf|n8SSJG^ zYf);f9ip9S|v`hT9K>3ql)R+A67N!A);SdRlNm!Rz|z<6nD$m zr)UdHkv3yNXR2$?<~Y&DcgYv-9p7)Vdc*3BjGsU`M}IflQO%9~-Zi_9NQt6|2}x&m z?Eh6MV>vfDU)y9o+T`F;RnBKwtD`%wVI#9e8svX!eT=X0E9+I&&J>r@Bb8m6$bHP# zB&OFuddK@OiAzu9TJ=_nqe9k;F_p*OH2tyD1dkr(w^+)G?}?#K>tv`8D$cS>kW~-m zq!HbxN>rV~UFgf>ItV^ZQd92e$qG2HAz_D%446e^1qov`KgOHSsVd8Xa^gnu;n=ASRZ+w6!obW z>ch%>1)Ey7PkoN7UfwU}@LSw9Vie`G5WYhOo$oDsNPB+8lyf?x^f>18sd(nICd%a9 z+=rryQ(Pjt!ntuBYMn+V>WkyFY7^h&o@%Oy9+9QJ>9{YlB6RO)OB@yLO}?s+coAPb zIeE*-g0xR-{nV(vq*p~d)Ri9ZG({CJp2zz@l)vV2tQSnaPwTZbAp5GJOLmK5_1s>P zzY+DWsd>4n>~LR&_uU=!9^M|uRHgbs7fkl-0(*3a>t8QQ$2{MMQ;B+ksM1tprL5;^ z=IkxsWS#?6yQf*#=z86{39o!bTzE^=E!0zv(LKbb@XpdbnZ7X{7VAzMYnygsgxHK@ F@*l_ak}m)N 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 37709c57f7a66986605e69b3573b37d4758dea1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9930 zcmd5?X-^wh6n&p7^*@Y|Dxd`#P*hdjWMdm}ifv*KBvn_YyKhFOV+!-Dd1EH##2lI5%;)Aavuy_U$fqTqH%%WSyXFwb zeY1}a zU=-Kgw_`~;slEi=YdF6F7k^;SkvTTMn=ziD ztAFer@;w6g?v6;HjXRW=uG;{WH=v;n+OI9`?Wq)FN@ZMWPNzIlCq3-K)tcCg$4y*s zt<#?ioL|_dyjS2$-{vdh7$`ADZ$F@!aDt&E0%3_w3s_?O8qs6g#jonY7 zy~3PWFMO66ULC1wPMYLT>RmF z9J`M1mbJbf&X@;&g|Ex6`_L5gw4kus)Suurly;mu`0q(EuY zyL;f2vG)zu4sFrryn~E`+%aA=AEzW4$#1N8Po}v_19D*2LO<|lt48aNlwvh)xje{a z?~bcb;+pj^yDj0V{H2$EC~b9g7*-`9HO*z92a_>qW7udM}{mrz=ZUC8*9C zhZSe>KC}87S6b_{8Y+OePZ4<-;a_32Q~>nCDKwU8sRXTn|$ z^9rqZ(kHG@BGokgH_Q;|)9d(bARCE&c@|Z!VkTAUReRt;=-L6D%%uc3!j1^z=9hMF zc6#_>9Q9=qBTD^sx_i&cg^{H*2L*S%J7p(&YFF%@T9}h}TxBWR3WmfOtQp8*)P0Lr zskZ8ESSYR8VeLtv3sRP5QPPE=?q#0T-@XoAMx|X(mnBWmPnb++hBb(fj~6xrQuK^D zPh}X!SM8H9$JTzTPv33gYtFA#ZVNW*E?~Db?ml!pb-b}I8k%1MjjA`rqon`bwE1$^ z;!G-IohyjQnwD8P`@pV0#C{U{!O|sVuj3p~nVm}Si_!cQ?!^5V<}8AeQlW6P+Ly06 zrGeN->m=f6=VySk`Fc!C$^K%)M68&yLr^STny^Y!NhU+2XET3?6PI{{E*cwBQ=dp6X9-haWsyQDZ=azn>@GK*h zQax^AObOn1z#lF3x%Fu02`VqicErc?dZIq*WwZ2HO)+h-Ya%8t*fXHrmGO=iI|F=%=p6@xz)9vqA6xklZCGIwdsI85ZdQdni}vb$lupH>CS=Nc;XCGXY7x~~ zB-}SKR}nMCZhaRhsF{<@JhtR^_)v?Qh1NNWoc?3$o!=g-rN&yhhmX7sXT9rK%4ZQP2zt2K9CvGS|8?O%U1;06 z-V8HKeakR=e^y|uDb1uNtm=m{jr z&Ry;e$79gP5A{M+V*M#^F4=?Oe~Cy3-}mt?UnoDvL;kI&QsG;x<}a~DGY4d!KYqh0 Y)>Oq&Op$7ob%*FoD3<$juK!c}A1aa!X#fBK 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 c5fd42fdfc61a456678f74428b68dc4964df3926..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4716 zcmb`LYfl?T6o${|O8pP3^aF+_B+yiqNF!mu1S*1445d|7Au#49Zt^8Gf4=SW&hcS) z?X@vVwOY^2&dj;I=Q3yf?>`6DvW8{$r+u=n-Px&a*n#a^o$tReKA~;fg>{%2*fs56 z_N{$mAFP?$*S1i2GQOVJ6|36Tw-xAS?C(RTn(~9qV62pY4tsvGUPv|?Ii9?_Qqb@Ti#`Q%l0GlKQZ$I&kCcr zjO$R(3OX#XS{e$M{WQNze;b*0L1u@i#n&dIA`Y?oSJpJy*FcUVc5TqxWxQ>hybar{ z*eg2g%ruZiJ4IdV>hRK7{ZIThStYs$Y3=nHYP(1@(`GH&ao}C^0jCDHpz=}I4Tth3f8ofK(YxY3vr6w{c#M$vX6}dEDbOd|xrsV{f0Rktb%1F8C_cP8prBHUkx5)dRUx#vUD+ zy|9~tr@u)01rqP<`1LZ<^#i^F~WlnX+u9Vqpn z*lE_Gxbet)aTv{!3!Q2)8mcHA+7{X?4~1;oU|vrVd`XncZ#^qi?Uo$56!M{2JR-B7 z6U|woQCajO(kVXmcm(#4uXsKw#$*}!TgF);zwwjfDXEoXWch~u4kzUX<$xOR|M|Go z9lWTGCk|5l3-8Dq%9P3n$IQr^daP;lbdnxtDUZBnwd~R5Q3g>Cxt;29p+PwhEX}lM zQcTSn3ClBaDSMwHXn8CTMRbg3s7baBy`#-NG&uOV_q<36YQ=V(axqtB!(39cIlQW9 z(K)i~9DaR_1^t|CmTcQ$)=$bJx9FE=%A>Nay>5y;^AgXRB|f$8sobkGd!N|J?7PS6 zOy_R7hAUbq_o%9qY|>fV!YA%houRW;(S1G4yoyrA%>%z*h!aVzxMPeH1MjFYMMXT$c~9txr}BK9;^lfq)#(bmUH-68*$NBn&9$F~msf$RXjK2L z*&qDQVzEi+HNnDbv$E7x_;{SXDaEZS*vv+&MV$xbb=7rTpfO&dmHjfa-#A6~sLr-h zTcb*st;V&QM6pd2b&+a4)yXaVQuyuA>WtZ;ze%g?end~Rhl!I;PahXOHMm4uw&tkp zvsresE=}ru-4|3JN{g~5g$$dl*-r>%tkr3yQ!D2k2;_0OI#SO~mOxo}J5`FZ^(s_@ z*HOYu^|0=YRUQ)ZP4|HDRT(t*@b783$F6dmmNU#H9)6Bw#Tq(JR^3JCc)#bZMk6>( zYK60I7oy)I(oZ;@qQ>+)tLjs)caMhWxp-ZXFHZ2aTjsnbQOrC~2Kj{i^J$!N?EQx0 ze)4=|H<9)-WjwE^l=DXOhHEwrS;t$r>;4${E2HT)y9X+&=UP1VbPLnntJ>$oDuIMz z*>#)j%dsc-;jfFApck#nB5bSh)jhO{W(_o-7R}0t%1e=<{2zd-9XY>T0{t7&DDlrd vph~K8{P>xek!k$ye}k{8mUMgh4c@J+8|?!#{+~_m={oZk$IiT5(!BQ{`PN{o 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 20c3f412913dc75e88ba16efef80b864becfd1a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3240 zcmd6pYflqF6o$`d6aT}0E2v!67&Rt^wpi68mWTHnMX&wW=Lj%Qo15&H99Q$39z^KNIWoKC=6E&$g`* z-YfPXbtUYc*cYfeHntbYP2e9RXA~s3j?Pq?_N4g~o^#|b^F6T(8`?284B2nP+r749 z9M+;ZMt|1^+#~Cu>nLb)ZJn?;gfqbxmmo{lY}Hom3HLf*>-LnrXV|!I&%^UE>kWIu zGwsnz@KPAH!v8w{?4rMpg?n60b{nkHm_+Kg&@|wyVaG9CRle%1cWsNiW(Nhll2hSN z4O_%1>7v^}m)82;=h=Wtat{OTzd}*kg`%$V6!$t9ehZO$hZP6t-3jjn5L~rIdlY=1 zanPauB$^&pzVXgfXKFpo!7a1%-2U6`D=bP?fAbnjtTfG)1bff1Zy08frot&!USvEwW7X%nf-5UoeYcv4kE%tO#Yk>} zL=WBxncK}!{!fvNR?7Q7jiaJp6w8Qy4Fq%&7%>YyuiN&Cub55y{JUg50zaJ#gt#J+ zp1WsLG(Ad}AggYdK<%@^qp9hj$z0-o$UW=M-m|im=iNCwgBA-txtpvk!pyrsCE(Dp zulUfTPkV1yCrmgC=?s-X(GKh8b#HEm3iP>ABs)KEyk?yvu`Ch`;e2y*X2qChr$c#K z{ZW!C^yVpVbc1Hz4A7Jx5M5=A@*s`&*b z?mF`_IciLZt2$}KQWIY1Wp$GQ-^zWjkQ1`q^PmsCS8%cS`EC_$j9se;pS$p~!a2fE ftUB+iTi(`Nb!+8?P?+HD&5k_tDBqdm&J2fN7f!iI 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 60e84142bb44a502845adf5e75707ce7faed32fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7678 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 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 cbd414213e669662dc83fce91bc5716bc47fd91b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2898 zcmbW3*-l$A5QgWvQs2RM2`zg!sa2&w5+D^M6iB(K5X!<1p$Y`rmv8(1_Oaps!s*wr4BQzp?Hz_UzP-*csU+VG`_oii=?>ez7zSB+VdbpuZt%y$ZSC1)~zTX;CM6aM>fq_J~Z zhSKQC*Dd@W5VsByl6`kxg5uI=R^(w7YwGwfYsDekR`5@2&Gp-6)*|-ur|r+bBvbM* z$a7Z7@YKZ8D{t8kwC*G7-YLQ>XMA;RNrt>T7k|3?Zuf|n8SSJG^ zYf);f9ip9S|v`hT9K>3ql)R+A67N!A);SdRlNm!Rz|z<6nD$m zr)UdHkv3yNXR2$?<~Y&DcgYv-9p7)Vdc*3BjGsU`M}IflQO%9~-Zi_9NQt6|2}x&m z?Eh6MV>vfDU)y9o+T`F;RnBKwtD`%wVI#9e8svX!eT=X0E9+I&&J>r@Bb8m6$bHP# zB&OFuddK@OiAzu9TJ=_nqe9k;F_p*OH2tyD1dkr(w^+)G?}?#K>tv`8D$cS>kW~-m zq!HbxN>rV~UFgf>ItV^ZQd92e$qG2HAz_D%446e^1qov`KgOHSsVd8Xa^gnu;n=ASRZ+w6!obW z>ch%>1)Ey7PkoN7UfwU}@LSw9Vie`G5WYhOo$oDsNPB+8lyf?x^f>18sd(nICd%a9 z+=rryQ(Pjt!ntuBYMn+V>WkyFY7^h&o@%Oy9+9QJ>9{YlB6RO)OB@yLO}?s+coAPb zIeE*-g0xR-{nV(vq*p~d)Ri9ZG({CJp2zz@l)vV2tQSnaPwTZbAp5GJOLmK5_1s>P zzY+DWsd>4n>~LR&_uU=!9^M|uRHgbs7fkl-0(*3a>t8QQ$2{MMQ;B+ksM1tprL5;^ z=IkxsWS#?6yQf*#=z86{39o!bTzE^=E!0zv(LKbb@XpdbnZ7X{7VAzMYnygsgxHK@ F@*l_ak}m)N 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 c5fd42fdfc61a456678f74428b68dc4964df3926..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4716 zcmb`LYfl?T6o${|O8pP3^aF+_B+yiqNF!mu1S*1445d|7Au#49Zt^8Gf4=SW&hcS) z?X@vVwOY^2&dj;I=Q3yf?>`6DvW8{$r+u=n-Px&a*n#a^o$tReKA~;fg>{%2*fs56 z_N{$mAFP?$*S1i2GQOVJ6|36Tw-xAS?C(RTn(~9qV62pY4tsvGUPv|?Ii9?_Qqb@Ti#`Q%l0GlKQZ$I&kCcr zjO$R(3OX#XS{e$M{WQNze;b*0L1u@i#n&dIA`Y?oSJpJy*FcUVc5TqxWxQ>hybar{ z*eg2g%ruZiJ4IdV>hRK7{ZIThStYs$Y3=nHYP(1@(`GH&ao}C^0jCDHpz=}I4Tth3f8ofK(YxY3vr6w{c#M$vX6}dEDbOd|xrsV{f0Rktb%1F8C_cP8prBHUkx5)dRUx#vUD+ zy|9~tr@u)01rqP<`1LZ<^#i^F~WlnX+u9Vqpn z*lE_Gxbet)aTv{!3!Q2)8mcHA+7{X?4~1;oU|vrVd`XncZ#^qi?Uo$56!M{2JR-B7 z6U|woQCajO(kVXmcm(#4uXsKw#$*}!TgF);zwwjfDXEoXWch~u4kzUX<$xOR|M|Go z9lWTGCk|5l3-8Dq%9P3n$IQr^daP;lbdnxtDUZBnwd~R5Q3g>Cxt;29p+PwhEX}lM zQcTSn3ClBaDSMwHXn8CTMRbg3s7baBy`#-NG&uOV_q<36YQ=V(axqtB!(39cIlQW9 z(K)i~9DaR_1^t|CmTcQ$)=$bJx9FE=%A>Nay>5y;^AgXRB|f$8sobkGd!N|J?7PS6 zOy_R7hAUbq_o%9qY|>fV!YA%houRW;(S1G4yoyrA%>%z*h!aVzxMPeH1MjFYMMXT$c~9txr}BK9;^lfq)#(bmUH-68*$NBn&9$F~msf$RXjK2L z*&qDQVzEi+HNnDbv$E7x_;{SXDaEZS*vv+&MV$xbb=7rTpfO&dmHjfa-#A6~sLr-h zTcb*st;V&QM6pd2b&+a4)yXaVQuyuA>WtZ;ze%g?end~Rhl!I;PahXOHMm4uw&tkp zvsresE=}ru-4|3JN{g~5g$$dl*-r>%tkr3yQ!D2k2;_0OI#SO~mOxo}J5`FZ^(s_@ z*HOYu^|0=YRUQ)ZP4|HDRT(t*@b783$F6dmmNU#H9)6Bw#Tq(JR^3JCc)#bZMk6>( zYK60I7oy)I(oZ;@qQ>+)tLjs)caMhWxp-ZXFHZ2aTjsnbQOrC~2Kj{i^J$!N?EQx0 ze)4=|H<9)-WjwE^l=DXOhHEwrS;t$r>;4${E2HT)y9X+&=UP1VbPLnntJ>$oDuIMz z*>#)j%dsc-;jfFApck#nB5bSh)jhO{W(_o-7R}0t%1e=<{2zd-9XY>T0{t7&DDlrd vph~K8{P>xek!k$ye}k{8mUMgh4c@J+8|?!#{+~_m={oZk$IiT5(!BQ{`PN{o 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 20c3f412913dc75e88ba16efef80b864becfd1a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3240 zcmd6pYflqF6o$`d6aT}0E2v!67&Rt^wpi68mWTHnMX&wW=Lj%Qo15&H99Q$39z^KNIWoKC=6E&$g`* z-YfPXbtUYc*cYfeHntbYP2e9RXA~s3j?Pq?_N4g~o^#|b^F6T(8`?284B2nP+r749 z9M+;ZMt|1^+#~Cu>nLb)ZJn?;gfqbxmmo{lY}Hom3HLf*>-LnrXV|!I&%^UE>kWIu zGwsnz@KPAH!v8w{?4rMpg?n60b{nkHm_+Kg&@|wyVaG9CRle%1cWsNiW(Nhll2hSN z4O_%1>7v^}m)82;=h=Wtat{OTzd}*kg`%$V6!$t9ehZO$hZP6t-3jjn5L~rIdlY=1 zanPauB$^&pzVXgfXKFpo!7a1%-2U6`D=bP?fAbnjtTfG)1bff1Zy08frot&!USvEwW7X%nf-5UoeYcv4kE%tO#Yk>} zL=WBxncK}!{!fvNR?7Q7jiaJp6w8Qy4Fq%&7%>YyuiN&Cub55y{JUg50zaJ#gt#J+ zp1WsLG(Ad}AggYdK<%@^qp9hj$z0-o$UW=M-m|im=iNCwgBA-txtpvk!pyrsCE(Dp zulUfTPkV1yCrmgC=?s-X(GKh8b#HEm3iP>ABs)KEyk?yvu`Ch`;e2y*X2qChr$c#K z{ZW!C^yVpVbc1Hz4A7Jx5M5=A@*s`&*b z?mF`_IciLZt2$}KQWIY1Wp$GQ-^zWjkQ1`q^PmsCS8%cS`EC_$j9se;pS$p~!a2fE ftUB+iTi(`Nb!+8?P?+HD&5k_tDBqdm&J2fN7f!iI 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 c19787a33821ae28e918806171ae43462dc07c92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12387 zcmZ{L19W8D7Hw?Xww-ir+qP|V%#LlNW2a-=wv+DINyqB^-23i(eLMgEs&P(@QKRM> z`>eJ0UYaE@1q^}$00aR6VB@c-1!3Mg83+gf5CskZfD8Ztpe1By>uh4{tf%Z@Z{nmw z=Wb)&kTfRS$ABQ>OFD{1YO6sI^rQ};BS<<5-hB5pDwHRg=V<35jf6!IB0jk>Lws^P z)6?6Cy5MLMWd_V^cqV$sfHRc12Fk@&ZRf$8QR;l>$hdx)3j(oel_7db_*@_~cTwM1 ze8zuIGGtTyN1+}h`N9`%|7Kj6^B_SfeagIWL^)Bp*pa&2Lyw_qYz@4af}x`7c&wq> z79zFyW}4%&2bXCfL{2hx)wh}yFAXV=x^u{r_23LR$a&!v3#?R=7NDpy7Vh{TOw_<` zf!T~-7d`g+y{ib*rR3;m8I-JNtZIYzun`=d2+w2-^_qY3SD>A;ic9ye9KJ;HK^rjGkDTRn>=008_TyBhH3{Zr4;#M+6T z?yq}gyo@X`BaCP@lE>B+3Y1`p1$&928$=SYdYBnm{-eSV!4@7s!rT%V9cRpg>+6KQ zN5_k%<1{A+M)OoQS_(KaP4v&OF&PWHV961Wz;+Ur`7m^-Dq4aw4544O`VGPEl+#l= z=5y#wB@4Ld3{RLsfvWNDx0cl{Mv#i~~goD{p_GAF$;P|8Au!m+ueUz@z2(dtNo z$V~CjKg&g8>0~)cn5vOH`9|_G>B+j=XGXC9sgLZak$v}f|K;Zf06=`#hntWXIffHYaA#(7uC}bkf!OLd8AT@_55aSb96L$8(H2f3f7-gYiZTujecI- zAMS&Q6OcFvN_h~3(c|&It+oIJ`DTJ z)Tt{@KmBvEbR7gHTF5*(c`~4wuxK=dUNQtZV=_T=s5u!9>*BRzwkvI^rl9vE2(-zB znZ%NOExzsGVJBt*iR(_dsuSR<<;*%vd#Ews&_L$iL`fG2Xez0bZn&DU)O2&{6SC9X zTr!J(&%+^T0N-n%4r!|1E$KcIst(poI~#_dT%Jz@z&6mySsR28^Ju zpO$@PdS7MBTb8V!jBC2&;JD{0EKJ3Yw>~Z5dw+_CjK%)meDEq;Q+FDT<-JS+e&oAa z*GAOG%gweUjKE8@sqj`US5n>Sc!T$><`H6#l?zQovICNZjfhwQ!r6laUqc`mBY(XK zo7DHx1188LeJtj9y$zcB%HI-ukh()Sq;Uh0OixTDe^gDA!YJcUjTwh+y)Fkbfi*VK z2Of_8z=4)b>FEtu+GD)Ytix`FRsNINtYUUBaWmjk_#;@jN0|BXP)i+D1AjL`Gf{;W zKM)8R%r}kDVb&`rREqj+2OQ$>PU-%8e7R}`D)z+%eG2H}QY48Xp1K0Sm@XMzB0+G( zD>e)FOh<%^Q5?}n2t>8;Fi5s^kdU$lb|>_UNGuzeF|NEWP_we!We#0a4P?A#H!5R9 z>fgj3RXmg9=**ZaTb-Jm21HqZeZ#Rb3$)9X;3V1zAHQcoMeu3J+AwQ{=p!hkW>8Tt z283)dL#*npt24`tj>AXJ?A58!I`BkjZ;|kXPrDd5@rM8Y9IrigOKZNxq2z{X8?6Df z3&X76#AQWWhfz@JUsRueoMx^P^6--cOe)2VeKQ#CeLn7S|@&^fU z;OqU)CnyW)WTu{|>PeC80FqdhGshsR`a==MDo)c+;g=9zXu+RoVkg{VIp-ZqMam>6 zX)*3co?9RA?9}bD7Al|W*lHCExynhBZV3_L!ZKBuPeXNB*>Zna&K0$04zqbslvenS zPRN6~Lu#i&o#Yk{pk+#Cu_96R&r0OgX`e{eD5(X|CXqhT9PoZJ1#J1k>SHvj)(aj> zny>@mWJjB~^$XixtP%?>*=?#U@qs)+SXqT;0f7buc4%(VR+2aenTBv7bX`qd2z1|} zgNZJh_=jGSM~pPORq{6xrOgCD*h+8#Ax|JI>%117`RS?xBdtqbzGZs>Brrf7a1WJV zTV=E6;a=)UsM0!)z)pMIOGgTTAdF~8Wvn9dymsc7W#Pvon)__EJ-Q;x1O$w6V72=U zrD(CSMZ0kNv_v}L7`>yyl>;^f{8fqrg(2*Eb9hk_UHG@M|*dX>?kGd1D+)2s5mfT69Mzm79ZMDs`Ni zT8S0|#FT2Flq8!6^Ig4{RJBPA`O-KWU-fa<(&lR$rCK*Q80Q7sYvtv6%}H ztLCCuR}XZWJFD``K6NDHJUrSxcbu^&-8MD^ae{EA!fjI|r53s6Dr084C~+CrmQnRO z28!5KTDPWG3STTDHqBn}sQY#;o%vFd%7LTc^4Q)=Q3n#AB)QF=>L~HlTdq7ko}O5U zSO~b(ObA3wk>fj~J%HpWo$(H;#9c9aY~I-$m$#U{tpRq(1nd6fDZZqLwOQ)d109aE zlC>iZxU{Us0w{8w<)T$NTPT`pTa{g-A8v6^r!U(aO3iU&yFE06s-ibF76*TmzH47o z^C@k7b3x7CW{iY_BroM-&9P`FCE< z+J9bl=~Ysc29d8X+hnh6kdSXYF7A%eu)+Z%$<7phHt2Rc5V(A`#PUihzOXDTX$ZI~ zXD}UToPHRXPwQriF6g3F%cx}6M8!K*?_8=8%)9FL&xAdjc++-N4PR!nOucqEk^TY0UWX9*Ah6@@e94ux1FwQg?hBni0&1SUR2WjBlKhnGyttYhGK*FEl`E9jAEMDS10xpy72q z;Qtw>T`GG`LEcl%Zy*2wIR6dP|H)nc9jyP(V;bf+WcvtEy06p-4>o6Ivm!9pChClv zH1Yjr=VH`z{h3|t=vy^7cY@iq+1?zV0%NP1@IUL@9eUYC`4Nrz=P5Lv%TR9@u5VT7 zw`uTwC!lQq-sW>dL&K=cFUG>_c&_qA^JzTVT+pIoF21+G>XBlh+&Yf_r`O1a7nt^x z@t#Hhn{>U*9QC?}%e?tvOwT%wOEBG~KdvR5uGjIcq5f;|_qwx(qtm+Dj(rdu52SSe`~tMaI2_lN^Nu99?RZVek$vce_qWQ({j zN^)f3%7#}e{s3u_Dn)shqHqP#k75}xpWFKtFQ7lQ7qk*dZ1b))ulEc0Pwko7**V+V zIh#2BmFxViKAA`XI3Pk8k!rzKw{W^h#=db|IQ<&{SXBbJV0lCCP8ywG?f1XheXebJ z*I7^<>@#UF(Dbq;0s@D;xwQ3l_OUPKzvMBhuo5G>Ab3`*3E##sA1PCf5me7I-7;!* zOa7AazcN0t>UaSg(f1(y@Hvck#>w*Xh zEqMCi3n&ctB4kRe{T9tvfAp(r=c)n1EINxrp+R?3KUSe7TG~qlg@p9YAd&g&f)tfp zlujNworbNYIfCBlM9(EWSCuT^kT9VcB(<7e#3!&NgqW>l258Ajj#}HkODre+AMm;Y z8+4{9!WzBC!Hki2Jw^|$*OZ>uYJALw9AmvHeC9v-NqSP3br#q-I^An7hq*WUs~URB zZ3-IdR|y%Wxf%4+iH0Nh<1o9C1Qu-o({@4$m@~u%{X+>(SYyUdpcaL!7t~6hTUc$f7?Q!Y~bz zG^&~2ueoK!#oD$oLF%)u4(}-6=G!7)-VeYHUQxm@^*Yym;@vX7tpJJ8xphK4x6SQu z0oZXAkBnw`de*8Li*6T?*r|@>YOkc)3LvFFfp*qs;VVX-;DM=a1sA9nhn{o5L=Q%6 z9wzz{(1B>0AVIb2KnHTevE^^c$c2B+O04rfmv172F6(hlR8RgYQ&S|oOOXtsuIoCU zPz!x63@`A$Q|nNJuIW;4(9U{QslF6ErB4#9tb6nA5K+t$VS9qIr*(PodGIK%uUqQU z#PX%V%#_;f(%P2qtR^fphk_SYFH?2u%(Ps9@+cnl`#g$qn|QRSG+0qAU7gLO%42f+ zd6YwCEYq~wA-W?s=t(Ed_U)->*EE9zq<7kD?Ri=f+(#tj`*!fW{cHBh?AXCw@I8HABP(3ur5@H+qc7?(d9RkN9=zR=E{e70lM?={xh*uG`7<O)EUTuAr)J~V+SX?ts_$SLOZL!ka90{K@?S3OmC;oP zk{l>$=;NebHs`FiwHiB$h`J+wZMq`*blH2i$x$ZDDK4bkk(C5@lS6NTDJJ7SiwI&G z58k~M$l&`s&EU&KTd4W)E&!hM6s9XDNAPx6t47p|qkA8AKD8eYy(omaU75z#2`LY& zhevOZL>@p6Ui0X$_><^M5rBf-MleLD;E}IUmLtBPm55RpsuKPvxti%At=~zToL}ia z12^XBo(P{dMfavHd-24~B`sC&>3H4Tw9d_#_wH=zW9wz}kX>lu@&xWW&wXC`l9B6! z0Ey(sYdx@Aa2>k6tjkhTe`i|jFVBM>`^eu!*YzH>K zD!Av-KE?dHJ!DJ#2oO_=C-0qfui00TlLvxUQHo~kq z1}ZqF5)KoflWpXBcmTpDeG8+UbqB6QR+;WasjEFKirUY!{e^oX=gIbts&))*L2SeV^C? zbzBFyhi{fOR^_15Kk|;Qj7t+t=@s@X8YGA>>wMh}cxX$XSV;F6`gAFsV*H*{`T$iG zj;&&77^3wIQkK{J{3FD97y+_A4y_+I9;00*NF|hh#P%aJ#_Pk&+Ms#*g;wL2(tt{22rSuaen*%bTD(2Yu0=<(~sw-oMwDFV7)*1T_IAU z@f@zhDT|FadHD~$jlE%lM&Vf&E|Zi(d;L6Q*v$$TV6k(u>WW`%o`NPE8m!s(j~Apo zcWgD8Ruq6TR#u}}4JN8m7aTYN9P|xoi=SdH4HA!GLl53m^6NP=Qx>u{kOLpDNf( zvrTu5FJSfoR+*oj(HBkh_K7n=kxSXc9xe;)_5^&i_5>LBD8bWcJ*+m@M&~{Dm{TZ> zEGi@CRW{M$E(R>}2s2DQ>Rfp>(Y#GIs9SurU`&K?&mrRl z+(xw{(;Z0XBenP^9=P&~ki{T@fOL0*^G+p7iGavx3G^L{APxup&1#E_lel?odgkVs zZ=Kz|O4WWAZU)fbGT)kj%Wj2laF_4yYe3s(XO(7f{SYsRCyqkHvB)eX=CWr}KHc{q zWuMZrzkZS4c&QWfN`b4xo40Leiq5C5Re)pYuF{AGJk z-(3&Ewse8~dpYxR=hi^s&Rnx#IXxl~9g+OVC1b*q%TE2?Hz9WG*V*v$zGy2wC|?iF z&Qwy)sJ_g$yPpJFOo?LSBiy1>w=LCQ*Xnj2!|s}wB?zG(#i-QmgyEv0oVp- zF};P=iMf;(qt>I4Ai1TwVer2qe?B&gBG3+zrfXwB6+s-sbR)P5f0&40cK|v+J(i>K zPg75Uup_ujSgoiGj9zh5RSezD!e>@m911qta;gZy4O4VrB!VS|RvSM$%xu)j@Rl}( zz3O~XVV+!sex#yPk>Io8v!wQrDbo$fR25r^H;Gbj2GRqRlK|P&?FlpCwNtETi)OMi z(okEOXr@w!P^Lv?xD7uewQ#_iyRDMgJniYIqXSH+qf6?fb@J`rv$GqVIFSia$_a)< z4Zs%Z;n1s=@81ElY31X3lO%I`DHoMF9}DKu1J&u|w+1r2NOBHK3s)Y2RxZwNsG9<6 z;dS(z!cQqGcg(h7y#;Xsr44C``O*Q2%Il5bcx%Xp8ko4bQETQX}=FVT`kx*r+Z^*q&11o0w;shzW zC4gu3fPoehg~)u;izs|WFF&DbS!vswdjm!*Tg#Rb-v|TGZ^A-*ONcyDB%~p8lK-3) z@EaE151I@ck7ozcE}gf~#O;92@0p_j+F0B<;^zo(JTzV^|T)u83wFaUkIy4vvXT!xoEN`tQ7rzA_Tjh zqiPLI!%o@yY*d^wv}_4-q^8793i#4!phCK;l)bm{xc*!@W;Yv`Q%aQ)<@>_FTz|JV zWz8{0io{6=<=fj$vv5>v@@>NF_apeUs#MRpzZB>zbMY0fQONeIyIkDy#2gyhrrQ>T z^J`{UIw4gkUYNR4Jr_&?9}dx%K=JCNSPkasW*hV%vWR_uaU+Qkb+MZj)2gU_*oa?{ zn@UY@pqGJO-w}`K;i9qGUx=AM4Wka@>TPuao$gz6DSnNnuC>qgy6=I6t@yNN16_=B z!H_J5A$wT1`~C5o^i7bWhvi_`qum?$pJ`@00I~(zd(kZg{I7ECkAg8PzQ;C@0VYHb zbWc{uEtL%9M)4N3k%u2eFiiNzFq^UGb78%;&Voz{x>)k7Z;#F2Ezihl{=7(T9Lzbjfw` zp%2{3jT(;R^vnwenw<MIv z%hO1xd|C~XRqszN;@bivue>Me4)2BS|0WDZb~b+v82+xhvu1k2`v?%gw$9{`f3-BLewatPOTu*R%dvCy0&c{rW%#8N^;w6Q>IBwxa!b?U z^|iEX;L%xnl)&#cu6+GMqfixw5sZ{HqbFb=7wp8TQVa<9I?0xa(8YgReSf@%qAPu$ zK!A%L4Q!EN`F?U4I{oNZKtO*UK|LxV*Kz8>eh(-eR-++NHCh>%83g9D`T=aompU9$ zMqkNshUCtAJJsd;!lWQwW(_gU4h=hd)4*6Ihx`L~N^1t)u3tYX!X>kR0sg56tVdfY zoOf>$`$rG&eH(d4J9{U3BRfZvziRu!_zBxy2819z(w{sIILbj42ym4g4T^<|4aXC8 zDf)>L=GntCuy(TR&Bbt(kZX}p{pyT1|kwnHM5j9Yos1q71y8|tPMBX ztpL?M9uOsjrlk|2bg%KJ2t36sqqrD|5xX@K>#h1AMNIYc&@Je+(`7UV^8iq!^3%u+ z_sDUXagws)Z@8_1xg^1GFzS(ssFAuI5Iy~Euz^2^ELiY()*E#DN4!HnGu?UX-F)jw z|H=IH`16G=GTjPWK^^jIY0_>X8{vR zNPH)~#F&+xIa8VRvI;y$)qU$)1E)!h>V3UpBipBH{)BAj@;8BYfWiKzuDnOkKUE26 zEGugKuFCm$RU*8**8fy#U~m7ICbJa(p1QW*Q|GUTNqLkx>JTFQ0Dvf^%%t^9Q0Hhg z!3Oc2vYiVd;E0<$AD=umMe6)@XmbU}hc7E2Lg8=%Qf!2An&+)9V)qt=8f zP;ZQ9ndyfPhuHqBfNyz3r&K`)gi<7BpLjE6YC29?ZG_J3j6?cDa<(@|ut=Fl@FK%` zAIZ>f=s-WI1zvFoB5~76COIrcjBJpJ2diZ%fcP?zl;*)FtMV%LH_r0jXGT#(>2qSs z+s*9C`AZd_P4<{sSj`1;h<#r^{h>PB%j%QLc#insQN_{0k%8AzkW*t-0E6ozGD)_< z-{*{`004$ALlo-At87O~XWN2mh*}ihJ z?qXGI5G0K!mf~4lly1CKA^a4`;A`uAEeo6zMoT|8wezG_bFL1su&P+4+-OxlM%m5I z?vfSTuawN`^NT~q_PO)YbKpN+DZQct68(MtX-NYBfcn1hzvrLM<|Z~K^nc$O|I>Ao zv0G!q=)6}$Xl+Y2mTHV>4d%;el)z@O{eowa)`+2$&p#^>mES#`?TX2ei|wlJzu}4z zf~xM1+IBhwVqWXQXPAh?l}|Hg%UM5|4gx_GKh<~d{pgdnxNs5!1Qd<1lN#dE*J_Og z5R8YrZLiFJe%~5g2H5QP9RLX{zm-vBz1in%R>fW9fr6jESI7r+5mqnsP_lNI=M&7M z309u`BrGL#ZfuOTG7f_~jRmmcd;gUd4B-nHgaLuZ1>BcqpG7iJ>1*|49xR2V>2-q@8=A#uyEBO?=9vpDuyeMHk{&FR zNKtL+Me7#Ir?Pla8TnU`a6?!~O^TJRRAE4IeuSi4pOe#1(vuoT^Yeeii7e9sIfx6@ zk|6=Ri)*M=DY=r%ZzF_S1cgi|G>ei@fZL1{0~LdX>WjDFu-S~o8)&ed4cLuBBawk9 zv7~*9sm_iN0be)bKyukhUY{1P^uB(&9hp-jm-FTGxI5iFs@6x3@ya7!_Ww>Hb9r8D z_sipo^x?S)e~ahM6*jim-_G~(_zd6Iwmwguvo=+2IqN{aHNRB~K zxeL3Y;t(W6BFHW<3UYqs%aU|j6AfoN zz;h+ST>IEK6$zQl31@5rLLH&lw}rd;t5IRZvFf0Mt5tUON4fX5n`0+g1cL%50UWA8 zw@j2o3fJU|tUJuk;w*9nQ@f35jnNg;L+X#3_xcECPlAQ`U|UCqm=pW|G5dw`~mg!RPt(S^jG8A*~uRgA#fw3y$RBQmFgz zMPCDOYb&2eT)xxkjsUD}^#^fnf|oVUC8SS2IYwC+nP;ZMSlfKZATBK&`$oM}M2LO2>j8Vs=D2QXIN;L+M0Ng4zL!>4ptc0UXc)T zB;V%l4%={JEJP9d*PY!5h@TJb9K(%JRA6W8uRM%bwqdJmCN;1Nh($)Q?f!zvtQhs% zDH0?AgMc$G({k+G#SLH(lNqZ@%?ZwCy?*n|{#J|wFV;u+Q@ARnxQGdR%5?W>+@~cp zW}@C1!I@~nc^f`jAV+$chhl2JRQ*Z=o&h}~5MMue6weGiyR`Z7QN;tAln<61nlQ}E zeO1x#F{s@BFJfKE`H*!;!L5mXI!bDy>4&9#TX8x%DG? zX5wZ#nDorXN(J}Q&#~)4*bQ=<1x3@DlDyQy`aBJ`^XJB^YemU8R7kTOS6l3-`gV|{ z8#{qxTM|6=&$TRcAg@AccdOE zWvTX5aApa%D6>JU6f01%;1nCX;EY+bpOKq2G4#UIn32h&gQZH#Z57K5rfinN?k`EC z@L-`>I2I^LcaLy2BzHVzY5Emn;;-SBTeF|4<}Ea?3$EC<1zQ%*Q`B2G*{~azI<-ZS zgK0jA?Z4TP7zHsh-XBFkBx&Y}<(ihXMv z(Oj+k2nxkO_VbCDFU96`9<*!S?ZYrR?`&u1tHsS%AV;V%8D~bRe8@y3W)(cPnK4_g zj&NJMs*?ub3rr{E{S;dpHihpUIzzPypcvmx&GUBEqm6?Oh;a?aok+jq?alBX?Rdmj z7{Z~=$b+!Y#Ess{8(1ciIHx|B3V%CK_#!r(`<6sH-Rl%lCBGPKDVw8I1)oPFGf$c6l{Q9x0b%Zi7hKwiIijK%q5NFvTLPv(jEVJ z6$o}F$%x~&$ph|dbdZ;KFBI4SjHAQ65BXiG7BYKYs=CZUeX$Vkn5p>Y+y&cp(*mLzDd2r2xL0l{; z?z8Q$CEIDait>EaM=>BglR0Mlw!AWAOAZ_i#~#4BxSItS&w-9l@gdmel54E~}h zdR+(IxvF-%hW^vHf^n25GvBkbq4x{rzge1_iJ{WJ+)F2#3+_F?6n@U^b(FKFKnVYd zD04{kwHr{njwIRIZnps`dP-10;M4Vus1h6fML$#=O^D>V6D?>Epcr|Qg!{!{;<%nuCm1_PXwP+)}G(=1MNZ{^Kp zf)nY`i)IJ7CM!3@W3{MdgX0M(v*Q(~X-#l^-LfvOTkJodhWC9;yz*YYpg{i7SFm+f zHZZjQyA(W29J4K8Knc0`fEs(I42j*(k1b<&WsXpI27pV|A3@*U3EDp!;vf-9N>&xF zWSQ*-x_%oxxIAh~VW(Hj#bxepkhFIfVKAhc`=piu!pB$0XNuupNL4IIoxIHh?DY+c z_CzEv33QiNt%d=TuCfwM06=4eB$!%}=bZR+pvN4_#TR2D?JOt8G z$AZEGv{|R}*SKW^n}><>Ab@tYBF$tr>B@m zfQ0Zl1YxZw-USAD@rs57EQ4pd45zLDDf)8(C@c73GisBD2aDUheJfhU4)7L-8?;rt z{ylJz@Ha|c3InBKy&cssStyI7D=X6LlZPey>_*Auv>j;rK;Vof1|EkIfLBA-r%F;4 z?`|STnL*xCLw^H*6ut-M|%4AvT2iKZf4#4_`p)&fY&X8@HkWg_ixv? zh*h3cOH~p#39EH6s>o$R&FQhQg)SD&;`6X-rvRc?5|412pRG8UCwxu=SzSW+d6ki4 zY%yp`olG|iRW8w!@6Y6D^=cBJJ8a4CA{D&`RTit7Lz#}^!* z35#6ajLF{ZK&Te*$x8vgACdom3h}#d|LgVtAQXQT@R85@8(shIVgF*cegu9be*Omb zzpwEBqJe&de}K-*CEj!qD$}{GVpiNBGB<%5S*GJ7ea5@P8UCAJHGn|KDh6{C}Z;Hv>Kj_*jPj z7SR7L;BU=;EXqHM_?UnE76C{8U*r8NTzrIo3^BjqmX!a%KLnhQ5|]', '_') - $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 d16aaf89abd33109bf823a3dd47610f17bbd42c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38523 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 S90Tl?0pS&3rkgkk!~*~-sW2}9 diff --git a/SQLAgent/DUTAS_SQLAgent_Config_v0.2.docx b/SQLAgent/DUTAS_SQLAgent_Config_v0.2.docx deleted file mode 100644 index 5d4a185840c6c042b51e860fdb43f143e21fc1c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35891 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 diff --git a/SQLAgent/DUTAS_SQLAgent_Config_v0.3.docx b/SQLAgent/DUTAS_SQLAgent_Config_v0.3.docx deleted file mode 100644 index 4b231605a9718257e23c04748ba4eec0c7106d29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37959 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 X!vWr`z~sfizypMgz@%p|5yS%kK0;sn