Add SQLAgent folder
This commit is contained in:
63
SQLAgent/02_Test/1_Database_Setup/CreateDB.sql
Normal file
63
SQLAgent/02_Test/1_Database_Setup/CreateDB.sql
Normal file
@ -0,0 +1,63 @@
|
||||
-- Create the database
|
||||
CREATE DATABASE TestDUTASJobSchedule;
|
||||
GO
|
||||
|
||||
USE TestDUTASJobSchedule;
|
||||
GO
|
||||
|
||||
-- Create the main control table
|
||||
CREATE TABLE dbo.JobControl (
|
||||
JobID INT IDENTITY(1,1) PRIMARY KEY,
|
||||
JobName VARCHAR(50) NOT NULL UNIQUE,
|
||||
ScheduledStartTime TIME NOT NULL,
|
||||
SchedulerAction VARCHAR(10) NOT NULL CHECK (SchedulerAction IN ('CONTINUE', 'STOP')),
|
||||
IsActive BIT DEFAULT 1,
|
||||
CreatedDate DATETIME DEFAULT GETDATE(),
|
||||
Frequency VARCHAR(20) NOT NULL
|
||||
);
|
||||
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
|
||||
34
SQLAgent/02_Test/1_Database_Setup/InsertHolidays.sql
Normal file
34
SQLAgent/02_Test/1_Database_Setup/InsertHolidays.sql
Normal file
@ -0,0 +1,34 @@
|
||||
USE TestDUTASJobSchedule;
|
||||
GO
|
||||
|
||||
-- Clear existing data and insert 2025-2026 holidays (ignoring 0000000000 dates)
|
||||
INSERT INTO dbo.FederalHolidays (HolidayDate, HolidayName, Year) VALUES
|
||||
-- 2025 Holidays
|
||||
('2025-01-01', 'New Years Day', 2025),
|
||||
('2025-01-20', 'Martin Luther King Day', 2025),
|
||||
('2025-02-17', 'Presidents Day', 2025),
|
||||
('2025-05-26', 'Memorial Day', 2025),
|
||||
('2025-06-19', 'Juneteenth Day', 2025),
|
||||
('2025-07-04', 'Independence Day', 2025),
|
||||
('2025-09-01', 'Labor Day', 2025),
|
||||
('2025-10-13', 'Columbus Day', 2025),
|
||||
('2025-11-11', 'Veterans Day', 2025),
|
||||
('2025-11-27', 'Thanksgiving Day', 2025),
|
||||
('2025-12-25', 'Christmas Day', 2025),
|
||||
|
||||
-- 2026 Holidays
|
||||
('2026-01-01', 'New Years Day', 2026),
|
||||
('2026-01-19', 'Martin Luther King Day', 2026),
|
||||
('2026-02-16', 'Presidents Day', 2026),
|
||||
('2026-05-25', 'Memorial Day', 2026),
|
||||
('2026-06-19', 'Juneteenth Day', 2026),
|
||||
('2026-07-03', 'Independence Day', 2026), -- Note: July 3rd observed since July 4th is Saturday
|
||||
('2026-09-07', 'Labor Day', 2026),
|
||||
('2026-10-12', 'Columbus Day', 2026),
|
||||
('2026-11-11', 'Veterans Day', 2026),
|
||||
('2026-11-26', 'Thanksgiving Day', 2026),
|
||||
('2026-12-25', 'Christmas Day', 2026);
|
||||
GO
|
||||
|
||||
-- Verify the data
|
||||
SELECT * FROM dbo.FederalHolidays ORDER BY HolidayDate;
|
||||
79
SQLAgent/02_Test/1_Database_Setup/InsertJobControl.sql
Normal file
79
SQLAgent/02_Test/1_Database_Setup/InsertJobControl.sql
Normal file
@ -0,0 +1,79 @@
|
||||
USE [TestDUTASJobSchedule]
|
||||
GO
|
||||
|
||||
INSERT INTO [dbo].[JobControl] (
|
||||
[JobName],
|
||||
[ScheduledStartTime],
|
||||
[SchedulerAction],
|
||||
[IsActive],
|
||||
[CreatedDate],
|
||||
[Frequency]
|
||||
)
|
||||
VALUES
|
||||
('TEST_DAILY_DTSBX215', '4:00:00', 'CONTINUE', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSBX305', '4:00:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSGSID0', '6:00:00', 'CONTINUE', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_GSIRQ300', '6:05:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSRQ202', '6:10:00', 'CONTINUE', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSGSID1', '6:15:00', 'CONTINUE', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSBX202', '7:00:00', 'CONTINUE', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSFT202', '8:00:00', 'CONTINUE', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSBX432', '8:30:00', 'CONTINUE', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSGACHD', '9:00:00', 'CONTINUE', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSBX303', '10:00:00', 'CONTINUE', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSGWAGE', '14:00:00', 'CONTINUE', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSGCHKS', '14:05:00', 'CONTINUE', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSESDAY', '14:05:00', 'CONTINUE', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSGPAYT', '14:10:00', 'CONTINUE', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSDX145', '16:05:00', 'CONTINUE', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSBX629', '16:15:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSBX630', '16:30:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSFRAUD', '16:30:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSRACHD', '17:00:00', 'CONTINUE', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSBXACH', '17:00:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSBXREG', '17:00:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSBX430', '17:00:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSBX626', '17:00:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSBX530', '17:00:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSBXREL', '17:00:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSBX450', '17:15:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSBX451', '17:15:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSPACHD', '18:00:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSPX148', '18:05:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSRQ325', '18:05:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSBX427', '18:07:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSPDAY1', '18:10:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSW4WGE', '18:15:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSGSID2', '18:15:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSGSID9', '18:15:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSMIN01', '18:20:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSMIN02', '18:20:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSRQ459', '19:00:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSBXPFL', '19:00:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DESBD427', '19:05:00', 'CONTINUE', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSBX403', '20:00:00', 'CONTINUE', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSBE405', '20:15:00', 'CONTINUE', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSBX405', '20:15:00', 'CONTINUE', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSRQ335', '21:00:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_DAILY_DTSBX601', '21:25:00', 'STOP', 1, GETDATE(), 'DAILY'),
|
||||
('TEST_WEEKLY_DTSGSID0', '6:00:00', 'CONTINUE', 1, GETDATE(), 'WEEKLY'),
|
||||
('TEST_WEEKLY_DTSGSID1', '6:15:00', 'CONTINUE', 1, GETDATE(), 'WEEKLY'),
|
||||
('TEST_WEEKLY_DTSBX202', '7:00:00', 'CONTINUE', 1, GETDATE(), 'WEEKLY'),
|
||||
('TEST_WEEKLY_DTSFT202', '8:00:00', 'STOP', 1, GETDATE(), 'WEEKLY'),
|
||||
('TEST_WEEKLY_DTSBX470', '7:00:00', 'CONTINUE', 1, GETDATE(), 'WEEKLY'),
|
||||
('TEST_WEEKLY_DTSBXREJ', '17:00:00', 'CONTINUE', 1, GETDATE(), 'WEEKLY'),
|
||||
('TEST_WEEKLY_DTSPDAY7', '19:10:00', 'STOP', 1, GETDATE(), 'WEEKLY'),
|
||||
('TEST_WEEKLY_DTSBX122', '19:14:00', 'CONTINUE', 1, GETDATE(), 'WEEKLY'),
|
||||
('TEST_WEEKLY_DTSRQ511', '19:14:00', 'CONTINUE', 1, GETDATE(), 'WEEKLY'),
|
||||
('TEST_WEEKLY_DTSRQ444', '7:00:00', 'CONTINUE', 1, GETDATE(), 'WEEKLY'),
|
||||
('TEST_WEEKLY_DTSRQ126', '9:00:00', 'CONTINUE', 1, GETDATE(), 'WEEKLY'),
|
||||
('TEST_MONTHLY_DTSRQ414', '18:15:00', 'STOP', 0, GETDATE(), 'MONTHLY'),
|
||||
('TEST_MONTHLY_DTSPMON1', '19:15:00', 'STOP', 0, GETDATE(), 'MONTHLY'),
|
||||
('TEST_MONTHLY_DTSCHGVB', '19:26:00', 'CONTINUE', 0, GETDATE(), 'MONTHLY'),
|
||||
('TEST_MONTHLY_DTSCHGVR', '19:27:00', 'STOP', 0, GETDATE(), 'MONTHLY'),
|
||||
('TEST_MONTHLY_DTSVBKUP', '19:26:00', 'CONTINUE', 0, GETDATE(), 'MONTHLY'),
|
||||
('TEST_MONTHLY_DTSVRSTR', '19:30:00', 'STOP', 0, GETDATE(), 'MONTHLY'),
|
||||
('TEST_MONTHLY_DTSRQ442', '19:37:00', 'CONTINUE', 0, GETDATE(), 'MONTHLY'),
|
||||
('TEST_MONTHLY_DTSBX460', '19:35:00', 'CONTINUE', 0, GETDATE(), 'MONTHLY'),
|
||||
('TEST_MONTHLY_DTSRQ513', '19:37:00', 'CONTINUE', 0, GETDATE(), 'MONTHLY'),
|
||||
('TEST_MONTHLY_DTSCHGDC', '13:00:00', 'CONTINUE', 0, GETDATE(), 'MONTHLY');
|
||||
75
SQLAgent/02_Test/1_Database_Setup/InsertJobDependencies.sql
Normal file
75
SQLAgent/02_Test/1_Database_Setup/InsertJobDependencies.sql
Normal file
@ -0,0 +1,75 @@
|
||||
USE [TestDUTASJobSchedule]
|
||||
GO
|
||||
|
||||
INSERT INTO [dbo].[JobDependencies] (
|
||||
[JobName],
|
||||
[PredecessorJobName]
|
||||
)
|
||||
VALUES
|
||||
('TEST_DAILY_DTSGSID0','TEST_DAILY_DTSBX305'),
|
||||
('TEST_DAILY_GSIRQ300','TEST_DAILY_DTSBX305'),
|
||||
('TEST_DAILY_DTSRQ202','TEST_DAILY_GSIRQ300'),
|
||||
('TEST_DAILY_DTSGSID1','TEST_DAILY_GSIRQ300'),
|
||||
('TEST_DAILY_DTSBX202','TEST_DAILY_GSIRQ300'),
|
||||
('TEST_DAILY_DTSFT202','TEST_DAILY_GSIRQ300'),
|
||||
('TEST_DAILY_DTSBX432','TEST_DAILY_GSIRQ300'),
|
||||
('TEST_DAILY_DTSGACHD','TEST_DAILY_GSIRQ300'),
|
||||
('TEST_DAILY_DTSBX303','TEST_DAILY_GSIRQ300'),
|
||||
('TEST_DAILY_DTSGWAGE','TEST_DAILY_GSIRQ300'),
|
||||
('TEST_DAILY_DTSGCHKS','TEST_DAILY_DTSGWAGE'),
|
||||
('TEST_DAILY_DTSESDAY','TEST_DAILY_DTSGCHKS'),
|
||||
('TEST_DAILY_DTSGPAYT','TEST_DAILY_DTSESDAY'),
|
||||
('TEST_DAILY_DTSDX145','TEST_DAILY_DTSGPAYT'),
|
||||
('TEST_DAILY_DTSBX629','TEST_DAILY_GSIRQ300'),
|
||||
('TEST_DAILY_DTSBX630','TEST_DAILY_DTSBX629'),
|
||||
('TEST_DAILY_DTSFRAUD','TEST_DAILY_DTSBX630'),
|
||||
('TEST_DAILY_DTSRACHD','TEST_DAILY_DTSFRAUD'),
|
||||
('TEST_DAILY_DTSBXACH','TEST_DAILY_DTSFRAUD'),
|
||||
('TEST_DAILY_DTSBXREG','TEST_DAILY_DTSFRAUD'),
|
||||
('TEST_DAILY_DTSBX430','TEST_DAILY_DTSFRAUD'),
|
||||
('TEST_DAILY_DTSBX626','TEST_DAILY_DTSFRAUD'),
|
||||
('TEST_DAILY_DTSBX530','TEST_DAILY_DTSFRAUD'),
|
||||
('TEST_DAILY_DTSBXREL','TEST_DAILY_DTSFRAUD'),
|
||||
('TEST_DAILY_DTSBX450','TEST_DAILY_DTSBXACH'),
|
||||
('TEST_DAILY_DTSBX450','TEST_DAILY_DTSBXREG'),
|
||||
('TEST_DAILY_DTSBX450','TEST_DAILY_DTSBX430'),
|
||||
('TEST_DAILY_DTSBX450','TEST_DAILY_DTSBX626'),
|
||||
('TEST_DAILY_DTSBX450','TEST_DAILY_DTSBX530'),
|
||||
('TEST_DAILY_DTSBX450','TEST_DAILY_DTSBXREL'),
|
||||
('TEST_DAILY_DTSBX451','TEST_DAILY_DTSBXACH'),
|
||||
('TEST_DAILY_DTSBX451','TEST_DAILY_DTSBXREG'),
|
||||
('TEST_DAILY_DTSBX451','TEST_DAILY_DTSBX430'),
|
||||
('TEST_DAILY_DTSBX451','TEST_DAILY_DTSBX626'),
|
||||
('TEST_DAILY_DTSBX451','TEST_DAILY_DTSBX530'),
|
||||
('TEST_DAILY_DTSBX451','TEST_DAILY_DTSBXREL'),
|
||||
('TEST_DAILY_DTSPACHD','TEST_DAILY_DTSBX451'),
|
||||
('TEST_DAILY_DTSPX148','TEST_DAILY_DTSPACHD'),
|
||||
('TEST_DAILY_DTSRQ325','TEST_DAILY_DTSPX148'),
|
||||
('TEST_DAILY_DTSBX427','TEST_DAILY_DTSRQ325'),
|
||||
('TEST_DAILY_DTSPDAY1','TEST_DAILY_DTSBX427'),
|
||||
('TEST_DAILY_DTSW4WGE','TEST_DAILY_DTSPDAY1'),
|
||||
('TEST_DAILY_DTSGSID2','TEST_DAILY_DTSPDAY1'),
|
||||
('TEST_DAILY_DTSGSID9','TEST_DAILY_DTSPDAY1'),
|
||||
('TEST_DAILY_DTSMIN01','TEST_DAILY_DTSW4WGE'),
|
||||
('TEST_DAILY_DTSMIN01','TEST_DAILY_DTSGSID2'),
|
||||
('TEST_DAILY_DTSMIN01','TEST_DAILY_DTSGSID9'),
|
||||
('TEST_DAILY_DTSMIN02','TEST_DAILY_DTSW4WGE'),
|
||||
('TEST_DAILY_DTSMIN02','TEST_DAILY_DTSGSID2'),
|
||||
('TEST_DAILY_DTSMIN02','TEST_DAILY_DTSGSID9'),
|
||||
('TEST_DAILY_DTSRQ459','TEST_DAILY_DTSMIN02'),
|
||||
('TEST_DAILY_DTSBXPFL','TEST_DAILY_DTSRQ459'),
|
||||
('TEST_DAILY_DESBD427','TEST_DAILY_DTSBXPFL'),
|
||||
('TEST_DAILY_DTSBX403','TEST_DAILY_DTSBXPFL'),
|
||||
('TEST_DAILY_DTSBE405','TEST_DAILY_DTSBXPFL'),
|
||||
('TEST_DAILY_DTSBX405','TEST_DAILY_DTSBXPFL'),
|
||||
('TEST_DAILY_DTSRQ335','TEST_DAILY_DTSBXPFL'),
|
||||
('TEST_DAILY_DTSBX601','TEST_DAILY_DTSRQ335'),
|
||||
('TEST_WEEKLY_DTSBXREJ','TEST_DAILY_DTSBXREL'),
|
||||
('TEST_WEEKLY_DTSBX122','TEST_WEEKLY_DTSPDAY7'),
|
||||
('TEST_WEEKLY_DTSRQ511','TEST_WEEKLY_DTSPDAY7'),
|
||||
('TEST_MONTHLY_DTSRQ414','TEST_DAILY_DTSPDAY1'),
|
||||
('TEST_MONTHLY_DTSCHGVB','TEST_MONTHLY_DTSPMON1'),
|
||||
('TEST_MONTHLY_DTSCHGVR','TEST_MONTHLY_DTSCHGVB'),
|
||||
('TEST_MONTHLY_DTSVBKUP','TEST_MONTHLY_DTSPMON1'),
|
||||
('TEST_MONTHLY_DTSVRSTR','TEST_MONTHLY_DTSVBKUP'),
|
||||
('TEST_MONTHLY_DTSRQ442','TEST_MONTHLY_DTSRQ513');
|
||||
BIN
SQLAgent/02_Test/2_Stored_Procedures/usp_CheckJobConditions.sql
Normal file
BIN
SQLAgent/02_Test/2_Stored_Procedures/usp_CheckJobConditions.sql
Normal file
Binary file not shown.
Binary file not shown.
BIN
SQLAgent/02_Test/2_Stored_Procedures/usp_CreateSQLAgentJob.sql
Normal file
BIN
SQLAgent/02_Test/2_Stored_Procedures/usp_CreateSQLAgentJob.sql
Normal file
Binary file not shown.
BIN
SQLAgent/02_Test/2_Stored_Procedures/usp_ForceComplete.sql
Normal file
BIN
SQLAgent/02_Test/2_Stored_Procedures/usp_ForceComplete.sql
Normal file
Binary file not shown.
BIN
SQLAgent/02_Test/2_Stored_Procedures/usp_ScheduleMonthlyJob.sql
Normal file
BIN
SQLAgent/02_Test/2_Stored_Procedures/usp_ScheduleMonthlyJob.sql
Normal file
Binary file not shown.
BIN
SQLAgent/02_Test/2_Stored_Procedures/usp_TriggerMissedJobs.sql
Normal file
BIN
SQLAgent/02_Test/2_Stored_Procedures/usp_TriggerMissedJobs.sql
Normal file
Binary file not shown.
Binary file not shown.
65
SQLAgent/02_Test/3_Job_Maintenance/ActivateMonthlyJob.sql
Normal file
65
SQLAgent/02_Test/3_Job_Maintenance/ActivateMonthlyJob.sql
Normal file
@ -0,0 +1,65 @@
|
||||
USE msdb;
|
||||
GO
|
||||
|
||||
-- Schedule TEST Monthly Jobs for October 2025
|
||||
------------------------------------------------
|
||||
EXEC dbo.usp_ScheduleMonthlyJob
|
||||
@JobName='TEST_MONTHLY_DTSRQ414',
|
||||
@Env='TEST',
|
||||
@RunDate='2025-11-03',
|
||||
@RunTime='18:15:00';
|
||||
|
||||
EXEC dbo.usp_ScheduleMonthlyJob
|
||||
@JobName='TEST_MONTHLY_DTSPMON1',
|
||||
@Env='TEST',
|
||||
@RunDate='2025-10-31',
|
||||
@RunTime='19:15:00';
|
||||
|
||||
EXEC dbo.usp_ScheduleMonthlyJob
|
||||
@JobName='TEST_MONTHLY_DTSCHGVB',
|
||||
@Env='TEST',
|
||||
@RunDate='2025-10-31',
|
||||
@RunTime='19:26:00';
|
||||
|
||||
EXEC dbo.usp_ScheduleMonthlyJob
|
||||
@JobName='TEST_MONTHLY_DTSCHGVR',
|
||||
@Env='TEST',
|
||||
@RunDate='2025-10-31',
|
||||
@RunTime='19:27:00';
|
||||
|
||||
EXEC dbo.usp_ScheduleMonthlyJob
|
||||
@JobName='TEST_MONTHLY_DTSVBKUP',
|
||||
@Env='TEST',
|
||||
@RunDate='2025-10-31',
|
||||
@RunTime='19:26:00';
|
||||
|
||||
EXEC dbo.usp_ScheduleMonthlyJob
|
||||
@JobName='TEST_MONTHLY_DTSVRSTR',
|
||||
@Env='TEST',
|
||||
@RunDate='2025-10-31',
|
||||
@RunTime='19:30:00';
|
||||
|
||||
EXEC dbo.usp_ScheduleMonthlyJob
|
||||
@JobName='TEST_MONTHLY_DTSRQ442',
|
||||
@Env='TEST',
|
||||
@RunDate='2025-10-31',
|
||||
@RunTime='19:37:00';
|
||||
|
||||
EXEC dbo.usp_ScheduleMonthlyJob
|
||||
@JobName='TEST_MONTHLY_DTSBX460',
|
||||
@Env='TEST',
|
||||
@RunDate='2025-10-31',
|
||||
@RunTime='19:35:00';
|
||||
|
||||
EXEC dbo.usp_ScheduleMonthlyJob
|
||||
@JobName='TEST_MONTHLY_DTSRQ513',
|
||||
@Env='TEST',
|
||||
@RunDate='2025-10-31',
|
||||
@RunTime='19:37:00';
|
||||
|
||||
EXEC dbo.usp_ScheduleMonthlyJob
|
||||
@JobName='TEST_MONTHLY_DTSCHGDC',
|
||||
@Env='TEST',
|
||||
@RunDate='2025-11-03',
|
||||
@RunTime='13:00:00';
|
||||
GO
|
||||
279
SQLAgent/02_Test/3_Job_Maintenance/AddDailyJobs.sql
Normal file
279
SQLAgent/02_Test/3_Job_Maintenance/AddDailyJobs.sql
Normal file
@ -0,0 +1,279 @@
|
||||
USE [msdb]
|
||||
GO
|
||||
|
||||
-- Execute the stored procedure for each job
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSBX215',
|
||||
@StartTimeHHMMSS = 40000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSBX305',
|
||||
@StartTimeHHMMSS = 40000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSGSID0',
|
||||
@StartTimeHHMMSS = 60000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_GSIRQ300',
|
||||
@StartTimeHHMMSS = 60500,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSRQ202',
|
||||
@StartTimeHHMMSS = 61000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSGSID1',
|
||||
@StartTimeHHMMSS = 61500,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSBX202',
|
||||
@StartTimeHHMMSS = 70000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSFT202',
|
||||
@StartTimeHHMMSS = 80000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSBX432',
|
||||
@StartTimeHHMMSS = 83000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSGACHD',
|
||||
@StartTimeHHMMSS = 90000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSBX303',
|
||||
@StartTimeHHMMSS = 100000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSGWAGE',
|
||||
@StartTimeHHMMSS = 140000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSGCHKS',
|
||||
@StartTimeHHMMSS = 140500,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSESDAY',
|
||||
@StartTimeHHMMSS = 140500,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSGPAYT',
|
||||
@StartTimeHHMMSS = 141000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSDX145',
|
||||
@StartTimeHHMMSS = 160500,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSBX629',
|
||||
@StartTimeHHMMSS = 161500,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSBX630',
|
||||
@StartTimeHHMMSS = 163000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSFRAUD',
|
||||
@StartTimeHHMMSS = 163000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSRACHD',
|
||||
@StartTimeHHMMSS = 170000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSBXACH',
|
||||
@StartTimeHHMMSS = 170000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSBXREG',
|
||||
@StartTimeHHMMSS = 170000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSBX430',
|
||||
@StartTimeHHMMSS = 170000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSBX626',
|
||||
@StartTimeHHMMSS = 170000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSBX530',
|
||||
@StartTimeHHMMSS = 170000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSBXREL',
|
||||
@StartTimeHHMMSS = 170000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSBX450',
|
||||
@StartTimeHHMMSS = 171500,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSBX451',
|
||||
@StartTimeHHMMSS = 171500,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSPACHD',
|
||||
@StartTimeHHMMSS = 180000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSPX148',
|
||||
@StartTimeHHMMSS = 180500,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSRQ325',
|
||||
@StartTimeHHMMSS = 180500,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSBX427',
|
||||
@StartTimeHHMMSS = 180700,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSPDAY1',
|
||||
@StartTimeHHMMSS = 181000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSW4WGE',
|
||||
@StartTimeHHMMSS = 181500,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSGSID2',
|
||||
@StartTimeHHMMSS = 181500,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSGSID9',
|
||||
@StartTimeHHMMSS = 181500,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSMIN01',
|
||||
@StartTimeHHMMSS = 182000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSMIN02',
|
||||
@StartTimeHHMMSS = 182000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSRQ459',
|
||||
@StartTimeHHMMSS = 190000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSBXPFL',
|
||||
@StartTimeHHMMSS = 190000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DESBD427',
|
||||
@StartTimeHHMMSS = 190500,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSBX403',
|
||||
@StartTimeHHMMSS = 200000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSBE405',
|
||||
@StartTimeHHMMSS = 201500,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSBX405',
|
||||
@StartTimeHHMMSS = 201500,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSRQ335',
|
||||
@StartTimeHHMMSS = 210000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
|
||||
EXEC [dbo].[usp_CreateSQLAgentJob]
|
||||
@JobName = 'TEST_DAILY_DTSBX601',
|
||||
@StartTimeHHMMSS = 212500,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
76
SQLAgent/02_Test/3_Job_Maintenance/AddMonthlyJobs.sql
Normal file
76
SQLAgent/02_Test/3_Job_Maintenance/AddMonthlyJobs.sql
Normal file
@ -0,0 +1,76 @@
|
||||
USE [msdb];
|
||||
GO
|
||||
|
||||
-- Note: Frequency here is used only for description (used for category): MONTHLY
|
||||
-- By Default Job will be scheduled Mon to Fri at specified time. Please change the schedules as per the requirement.
|
||||
|
||||
-- 1.
|
||||
EXEC dbo.usp_CreateSQLAgentJob
|
||||
@JobName = 'TEST_MONTHLY_DTSRQ414',
|
||||
@StartTimeHHMMSS = 181500,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'MONTHLY';
|
||||
|
||||
-- 2.
|
||||
EXEC dbo.usp_CreateSQLAgentJob
|
||||
@JobName = 'TEST_MONTHLY_DTSPMON1',
|
||||
@StartTimeHHMMSS = 191500,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'MONTHLY';
|
||||
|
||||
-- 3.
|
||||
EXEC dbo.usp_CreateSQLAgentJob
|
||||
@JobName = 'TEST_MONTHLY_DTSCHGVB',
|
||||
@StartTimeHHMMSS = 192600,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'MONTHLY';
|
||||
|
||||
-- 4.
|
||||
EXEC dbo.usp_CreateSQLAgentJob
|
||||
@JobName = 'TEST_MONTHLY_DTSCHGVR',
|
||||
@StartTimeHHMMSS = 192700,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'MONTHLY';
|
||||
|
||||
-- 5.
|
||||
EXEC dbo.usp_CreateSQLAgentJob
|
||||
@JobName = 'TEST_MONTHLY_DTSVBKUP',
|
||||
@StartTimeHHMMSS = 192600,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'MONTHLY';
|
||||
|
||||
-- 6.
|
||||
EXEC dbo.usp_CreateSQLAgentJob
|
||||
@JobName = 'TEST_MONTHLY_DTSVRSTR',
|
||||
@StartTimeHHMMSS = 193000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'MONTHLY';
|
||||
|
||||
-- 7.
|
||||
EXEC dbo.usp_CreateSQLAgentJob
|
||||
@JobName = 'TEST_MONTHLY_DTSRQ442',
|
||||
@StartTimeHHMMSS = 193700,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'MONTHLY';
|
||||
|
||||
-- 8.
|
||||
EXEC dbo.usp_CreateSQLAgentJob
|
||||
@JobName = 'TEST_MONTHLY_DTSBX460',
|
||||
@StartTimeHHMMSS = 193500,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'MONTHLY';
|
||||
|
||||
-- 9.
|
||||
EXEC dbo.usp_CreateSQLAgentJob
|
||||
@JobName = 'TEST_MONTHLY_DTSRQ513',
|
||||
@StartTimeHHMMSS = 193700,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'MONTHLY';
|
||||
|
||||
-- 10.
|
||||
EXEC dbo.usp_CreateSQLAgentJob
|
||||
@JobName = 'TEST_MONTHLY_DTSCHGDC',
|
||||
@StartTimeHHMMSS = 130000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'MONTHLY';
|
||||
GO
|
||||
9
SQLAgent/02_Test/3_Job_Maintenance/AddOneJob.sql
Normal file
9
SQLAgent/02_Test/3_Job_Maintenance/AddOneJob.sql
Normal file
@ -0,0 +1,9 @@
|
||||
USE [msdb]
|
||||
GO
|
||||
|
||||
-- Create a job that runs Monday-Friday at 4:00 AM
|
||||
EXEC dbo.usp_CreateSQLAgentJob
|
||||
@JobName = 'TEST_DAILY_DTSBX215',
|
||||
@StartTimeHHMMSS = 40000, -- For 4:00:00 AM (143000 for 2:30:00 PM)
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'DAILY';
|
||||
81
SQLAgent/02_Test/3_Job_Maintenance/AddWeeklyJobs.sql
Normal file
81
SQLAgent/02_Test/3_Job_Maintenance/AddWeeklyJobs.sql
Normal file
@ -0,0 +1,81 @@
|
||||
USE [msdb]
|
||||
GO
|
||||
|
||||
-- Note: Frequency here is used only for description (used for category): DAILY, WEEKLY, etc.
|
||||
-- By Default Job will be scheduled to run on Mon to Fri at specified time. Please change the schedules as per the requirement.
|
||||
-- 1.
|
||||
EXEC dbo.usp_CreateSQLAgentJob
|
||||
@JobName = 'TEST_WEEKLY_DTSGSID0',
|
||||
@StartTimeHHMMSS = 60000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'WEEKLY';
|
||||
|
||||
-- 2.
|
||||
EXEC dbo.usp_CreateSQLAgentJob
|
||||
@JobName = 'TEST_WEEKLY_DTSGSID1',
|
||||
@StartTimeHHMMSS = 61500,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'WEEKLY';
|
||||
|
||||
-- 3.
|
||||
EXEC dbo.usp_CreateSQLAgentJob
|
||||
@JobName = 'TEST_WEEKLY_DTSBX202',
|
||||
@StartTimeHHMMSS = 70000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'WEEKLY';
|
||||
|
||||
-- 4.
|
||||
EXEC dbo.usp_CreateSQLAgentJob
|
||||
@JobName = 'TEST_WEEKLY_DTSFT202',
|
||||
@StartTimeHHMMSS = 80000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'WEEKLY';
|
||||
|
||||
-- 5.
|
||||
EXEC dbo.usp_CreateSQLAgentJob
|
||||
@JobName = 'TEST_WEEKLY_DTSBX470',
|
||||
@StartTimeHHMMSS = 70000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'WEEKLY';
|
||||
|
||||
-- 6.
|
||||
EXEC dbo.usp_CreateSQLAgentJob
|
||||
@JobName = 'TEST_WEEKLY_DTSBXREJ',
|
||||
@StartTimeHHMMSS = 170000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'WEEKLY';
|
||||
|
||||
-- 7.
|
||||
EXEC dbo.usp_CreateSQLAgentJob
|
||||
@JobName = 'TEST_WEEKLY_DTSPDAY7',
|
||||
@StartTimeHHMMSS = 191000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'WEEKLY';
|
||||
|
||||
-- 8.
|
||||
EXEC dbo.usp_CreateSQLAgentJob
|
||||
@JobName = 'TEST_WEEKLY_DTSBX122',
|
||||
@StartTimeHHMMSS = 191400,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'WEEKLY';
|
||||
|
||||
-- 9.
|
||||
EXEC dbo.usp_CreateSQLAgentJob
|
||||
@JobName = 'TEST_WEEKLY_DTSRQ511',
|
||||
@StartTimeHHMMSS = 191400,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'WEEKLY';
|
||||
|
||||
-- 10.
|
||||
EXEC dbo.usp_CreateSQLAgentJob
|
||||
@JobName = 'TEST_WEEKLY_DTSRQ444',
|
||||
@StartTimeHHMMSS = 70000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'WEEKLY';
|
||||
|
||||
-- 11.
|
||||
EXEC dbo.usp_CreateSQLAgentJob
|
||||
@JobName = 'TEST_WEEKLY_DTSRQ126',
|
||||
@StartTimeHHMMSS = 90000,
|
||||
@Env = 'TEST',
|
||||
@Frequency = 'WEEKLY';
|
||||
@ -0,0 +1,86 @@
|
||||
/********************************************************************************************
|
||||
Section 1: Daily Job Schedule Lookup
|
||||
--------------------------------------------------------------------------------------------
|
||||
Description:
|
||||
Returns all SQL Agent jobs scheduled to run on a given date, along with their control
|
||||
status (IsActive) and configured runtime from JobControl.
|
||||
|
||||
Parameters:
|
||||
@CheckDate - The date to check job schedules for.
|
||||
|
||||
Notes:
|
||||
<20> Uses MSDB<44>s internal schedule definitions (sysschedules, sysjobschedules).
|
||||
<20> Supports One-time, Daily, Weekly, and Monthly schedule types.
|
||||
<20> Can easily be adapted for DEVL / TEST / PROD by changing @DbName.
|
||||
|
||||
********************************************************************************************/
|
||||
USE msdb;
|
||||
GO
|
||||
|
||||
DECLARE @CheckDate DATE = CAST(GETDATE() AS DATE); -- Change if needed
|
||||
DECLARE @CheckWeekday INT = DATEPART(WEEKDAY, @CheckDate);
|
||||
DECLARE @Env SYSNAME = 'TEST'; -- Change for DEVL or PROD
|
||||
DECLARE @DbName SYSNAME;
|
||||
|
||||
-- Map environment to the right control DB
|
||||
SET @DbName = CASE @Env
|
||||
WHEN 'DEVL' THEN 'DevlDUTASJobSchedule'
|
||||
WHEN 'TEST' THEN 'TestDUTASJobSchedule'
|
||||
WHEN 'PROD' THEN 'ProdDUTASJobSchedule'
|
||||
END;
|
||||
|
||||
DECLARE @Sql NVARCHAR(MAX);
|
||||
SET @Sql = N'
|
||||
SELECT
|
||||
j.name AS SQLAgentJobName,
|
||||
jc.JobName AS ControlJobName,
|
||||
jc.ScheduledStartTime,
|
||||
jc.IsActive,
|
||||
s.name AS ScheduleName,
|
||||
s.freq_type,
|
||||
s.freq_interval,
|
||||
s.freq_subday_type,
|
||||
s.freq_subday_interval,
|
||||
s.active_start_date,
|
||||
CASE s.freq_type
|
||||
WHEN 1 THEN ''One-time''
|
||||
WHEN 4 THEN ''Daily''
|
||||
WHEN 8 THEN ''Weekly''
|
||||
WHEN 16 THEN ''Monthly''
|
||||
ELSE ''Other''
|
||||
END AS FrequencyType,
|
||||
CASE
|
||||
WHEN s.freq_type = 1
|
||||
AND s.active_start_date = CONVERT(INT, CONVERT(CHAR(8), @CheckDateParam, 112))
|
||||
THEN 1
|
||||
WHEN s.freq_type = 4
|
||||
AND s.active_start_date <= CONVERT(INT, CONVERT(CHAR(8), @CheckDateParam, 112))
|
||||
THEN 1
|
||||
WHEN s.freq_type = 8 -- Weekly
|
||||
AND (POWER(2, @CheckWeekdayParam - 1) & s.freq_interval) > 0
|
||||
THEN 1
|
||||
WHEN s.freq_type = 16 -- Monthly
|
||||
AND DAY(@CheckDateParam) = s.freq_interval
|
||||
THEN 1
|
||||
ELSE 0
|
||||
END AS IsScheduledToday
|
||||
FROM msdb.dbo.sysjobs j
|
||||
JOIN msdb.dbo.sysjobschedules js ON j.job_id = js.job_id
|
||||
JOIN msdb.dbo.sysschedules s ON js.schedule_id = s.schedule_id
|
||||
LEFT JOIN ' + QUOTENAME(@DbName) + '.dbo.JobControl jc ON jc.JobName = j.name
|
||||
WHERE jc.IsActive = 1
|
||||
AND (
|
||||
(s.freq_type = 1 AND s.active_start_date = CONVERT(INT, CONVERT(CHAR(8), @CheckDateParam, 112))) -- One-time
|
||||
OR (s.freq_type = 4 AND s.active_start_date <= CONVERT(INT, CONVERT(CHAR(8), @CheckDateParam, 112))) -- Daily
|
||||
OR (s.freq_type = 8 AND (POWER(2, @CheckWeekdayParam - 1) & s.freq_interval) > 0) -- Weekly
|
||||
OR (s.freq_type = 16 AND DAY(@CheckDateParam) = s.freq_interval) -- Monthly
|
||||
)
|
||||
ORDER BY jc.ScheduledStartTime;
|
||||
';
|
||||
|
||||
EXEC sp_executesql
|
||||
@Sql,
|
||||
N'@CheckDateParam DATE, @CheckWeekdayParam INT',
|
||||
@CheckDateParam = @CheckDate,
|
||||
@CheckWeekdayParam = @CheckWeekday;
|
||||
GO
|
||||
12
SQLAgent/02_Test/3_Job_Maintenance/DeactivateMonthlyJob.sql
Normal file
12
SQLAgent/02_Test/3_Job_Maintenance/DeactivateMonthlyJob.sql
Normal file
@ -0,0 +1,12 @@
|
||||
USE TestDUTASJobSchedule;
|
||||
GO
|
||||
|
||||
UPDATE dbo.JobControl
|
||||
SET IsActive = 0
|
||||
WHERE Frequency = 'MONTHLY';
|
||||
GO
|
||||
|
||||
-- Optional: Verify changes
|
||||
SELECT JobName, Frequency, IsActive
|
||||
FROM dbo.JobControl
|
||||
WHERE Frequency = 'MONTHLY';
|
||||
@ -0,0 +1,13 @@
|
||||
-- If you know both the job name and schedule name
|
||||
DECLARE @JobName NVARCHAR(100) = 'TEST_MONTHLY_DTSCHGDC';
|
||||
DECLARE @ScheduleName NVARCHAR(200) = 'TEST_MONTHLY_DTSCHGDC_MonthlySchedule';
|
||||
DECLARE @JobId UNIQUEIDENTIFIER;
|
||||
|
||||
-- Get job ID
|
||||
SELECT @JobId = job_id FROM msdb.dbo.sysjobs WHERE name = @JobName;
|
||||
|
||||
-- Detach from specific job
|
||||
EXEC msdb.dbo.sp_detach_schedule @job_id = @JobId, @schedule_name = @ScheduleName;
|
||||
|
||||
-- Then delete
|
||||
EXEC msdb.dbo.sp_delete_schedule @schedule_name = @ScheduleName;
|
||||
16
SQLAgent/02_Test/3_Job_Maintenance/ForceCompleteJob.sql
Normal file
16
SQLAgent/02_Test/3_Job_Maintenance/ForceCompleteJob.sql
Normal file
@ -0,0 +1,16 @@
|
||||
USE TestDUTASJobSchedule;
|
||||
GO
|
||||
|
||||
-- 1. Check today's job status
|
||||
SELECT JobName, Status, ErrorMessage
|
||||
FROM dbo.JobExecutionHistory
|
||||
WHERE RunDate = CAST(GETDATE() AS DATE)
|
||||
AND JobName = 'DEVL_WEEKLY_DTSGSID1';
|
||||
|
||||
-- 2. Mark DTSBX305 as manually overridden
|
||||
EXEC dbo.usp_ForceComplete 'DEVL_WEEKLY_DTSGSID1', 'Neeraj.Kumar';
|
||||
|
||||
-- 3. Verify the override
|
||||
SELECT JobName, Status, OverrideBy, OverrideDate
|
||||
FROM dbo.JobExecutionHistory
|
||||
WHERE JobName = 'DEVL_WEEKLY_DTSGSID1' AND RunDate = CAST(GETDATE() AS DATE);
|
||||
47
SQLAgent/02_Test/3_Job_Maintenance/JobInfo.sql
Normal file
47
SQLAgent/02_Test/3_Job_Maintenance/JobInfo.sql
Normal file
@ -0,0 +1,47 @@
|
||||
USE msdb;
|
||||
GO
|
||||
|
||||
PRINT '================================================================================';
|
||||
PRINT 'SECTION 1: JOB CONTROL INFORMATION';
|
||||
PRINT '================================================================================';
|
||||
GO
|
||||
|
||||
-- View all active jobs
|
||||
SELECT JobName, ScheduledStartTime, Frequency, IsActive
|
||||
FROM TestDUTASJobSchedule.dbo.JobControl
|
||||
WHERE IsActive = 1
|
||||
ORDER BY Frequency, ScheduledStartTime;
|
||||
GO
|
||||
|
||||
-- View all inactive jobs
|
||||
SELECT JobName, Frequency, ScheduledStartTime
|
||||
FROM TestDUTASJobSchedule.dbo.JobControl
|
||||
WHERE IsActive = 0
|
||||
ORDER BY Frequency;
|
||||
GO
|
||||
|
||||
-- Find weekly/monthly jobs
|
||||
SELECT JobName, Frequency, ScheduledStartTime
|
||||
FROM TestDUTASJobSchedule.dbo.JobControl
|
||||
WHERE Frequency IN ('WEEKLY', 'MONTHLY')
|
||||
ORDER BY Frequency, ScheduledStartTime;
|
||||
GO
|
||||
|
||||
PRINT '================================================================================';
|
||||
PRINT 'SECTION 2: JOB DEPENDENCIES';
|
||||
PRINT '================================================================================';
|
||||
GO
|
||||
|
||||
-- Check dependencies for a job
|
||||
DECLARE @Job NVARCHAR(100) = 'TEST_MONTHLY_DTSCHGVR';
|
||||
SELECT JobName, PredecessorJobName
|
||||
FROM TestDUTASJobSchedule.dbo.JobDependencies
|
||||
WHERE JobName = @Job;
|
||||
GO
|
||||
|
||||
-- Show dependency chain overview
|
||||
SELECT d.JobName, d.PredecessorJobName, jc.ScheduledStartTime, jc.Frequency
|
||||
FROM TestDUTASJobSchedule.dbo.JobDependencies d
|
||||
JOIN TestDUTASJobSchedule.dbo.JobControl jc ON d.JobName = jc.JobName
|
||||
ORDER BY jc.Frequency, jc.ScheduledStartTime;
|
||||
GO
|
||||
42
SQLAgent/02_Test/3_Job_Maintenance/SQLAgentInfo.sql
Normal file
42
SQLAgent/02_Test/3_Job_Maintenance/SQLAgentInfo.sql
Normal file
@ -0,0 +1,42 @@
|
||||
USE msdb;
|
||||
GO
|
||||
|
||||
PRINT '================================================================================';
|
||||
PRINT 'SECTION 1: SQL AGENT JOB STATUS';
|
||||
PRINT '================================================================================';
|
||||
GO
|
||||
|
||||
-- List all jobs in SQL Agent
|
||||
SELECT name AS JobName, enabled, date_created, date_modified
|
||||
FROM msdb.dbo.sysjobs
|
||||
ORDER BY name;
|
||||
GO
|
||||
|
||||
-- Job schedule summary
|
||||
SELECT j.name AS JobName, s.name AS ScheduleName,
|
||||
s.enabled, s.freq_type, s.active_start_date, s.active_start_time
|
||||
FROM msdb.dbo.sysjobs j
|
||||
JOIN msdb.dbo.sysjobschedules js ON j.job_id = js.job_id
|
||||
JOIN msdb.dbo.sysschedules s ON js.schedule_id = s.schedule_id
|
||||
ORDER BY j.name;
|
||||
GO
|
||||
|
||||
-- Last job run details
|
||||
SELECT j.name AS JobName,
|
||||
h.run_status,
|
||||
CASE h.run_status
|
||||
WHEN 0 THEN 'Failed'
|
||||
WHEN 1 THEN 'Succeeded'
|
||||
WHEN 2 THEN 'Retry'
|
||||
WHEN 3 THEN 'Canceled'
|
||||
WHEN 4 THEN 'In Progress'
|
||||
END AS StatusDescription,
|
||||
msdb.dbo.agent_datetime(h.run_date, h.run_time) AS RunDateTime,
|
||||
h.run_duration
|
||||
FROM dbo.sysjobs j
|
||||
LEFT JOIN dbo.sysjobhistory h ON j.job_id = h.job_id
|
||||
WHERE h.instance_id IN (
|
||||
SELECT MAX(instance_id) FROM dbo.sysjobhistory GROUP BY job_id
|
||||
)
|
||||
ORDER BY RunDateTime DESC;
|
||||
GO
|
||||
21
SQLAgent/02_Test/3_Job_Maintenance/TodaysExecution.sql
Normal file
21
SQLAgent/02_Test/3_Job_Maintenance/TodaysExecution.sql
Normal file
@ -0,0 +1,21 @@
|
||||
USE TestDUTASJobSchedule;
|
||||
GO
|
||||
|
||||
DECLARE @Runday DATE = DATEADD(day, +0, CAST(GETDATE() AS DATE)); -- -1 for Yesterday
|
||||
|
||||
SELECT
|
||||
jeh.ExecutionID,
|
||||
jeh.JobName,
|
||||
jeh.RunDate,
|
||||
jc.ScheduledStartTime,
|
||||
jeh.ActualStartTime,
|
||||
jeh.ActualEndTime,
|
||||
jeh.Status,
|
||||
jeh.ErrorMessage,
|
||||
jeh.OverrideFlag,
|
||||
jeh.OverrideBy
|
||||
FROM dbo.JobExecutionHistory jeh
|
||||
INNER JOIN dbo.JobControl jc
|
||||
ON jeh.JobName = jc.JobName
|
||||
WHERE jeh.RunDate = @Runday
|
||||
ORDER BY jc.ScheduledStartTime, jeh.ActualStartTime;
|
||||
9
SQLAgent/02_Test/3_Job_Maintenance/TriggerMissedJob.sql
Normal file
9
SQLAgent/02_Test/3_Job_Maintenance/TriggerMissedJob.sql
Normal file
@ -0,0 +1,9 @@
|
||||
USE [TestDUTASJobSchedule]
|
||||
GO
|
||||
|
||||
-- 1. Preview missed jobs (safe, no run):
|
||||
EXEC dbo.usp_TriggerMissedJobs @DryRun = 1;
|
||||
|
||||
-- 2. Actually trigger missed jobs:
|
||||
EXEC dbo.usp_TriggerMissedJobs @DryRun = 0;
|
||||
|
||||
@ -0,0 +1,16 @@
|
||||
# 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"
|
||||
102
SQLAgent/02_Test/4_PowerShell_Scripts/Execute-RemoteJob.ps1
Normal file
102
SQLAgent/02_Test/4_PowerShell_Scripts/Execute-RemoteJob.ps1
Normal file
@ -0,0 +1,102 @@
|
||||
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
|
||||
108
SQLAgent/02_Test/4_PowerShell_Scripts/RCSubmit-Job.ps1
Normal file
108
SQLAgent/02_Test/4_PowerShell_Scripts/RCSubmit-Job.ps1
Normal file
@ -0,0 +1,108 @@
|
||||
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 = @"
|
||||
<pre style='font-family: Courier, monospace;'>
|
||||
DUTAS Batch Job: $JobName Execution Report
|
||||
==========================================
|
||||
$($summary -join "`n")
|
||||
==========================================
|
||||
|
||||
Return Code: $exitCode
|
||||
Status: $(if ($isSuccess -eq 0) { "SUCCESS" } else { "FAILED" })
|
||||
JOBLOG Path: $syslogFolder
|
||||
</pre>
|
||||
"@
|
||||
|
||||
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
|
||||
15
SQLAgent/02_Test/5_Deployment/Deploy_DEVL_to_TEST.sql
Normal file
15
SQLAgent/02_Test/5_Deployment/Deploy_DEVL_to_TEST.sql
Normal file
@ -0,0 +1,15 @@
|
||||
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);
|
||||
15
SQLAgent/02_Test/5_Deployment/Deploy_TEST_to_PROD.sql
Normal file
15
SQLAgent/02_Test/5_Deployment/Deploy_TEST_to_PROD.sql
Normal file
@ -0,0 +1,15 @@
|
||||
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);
|
||||
Reference in New Issue
Block a user