Files
sql-scripts/TPDT-268 - ACP in task sequence/dba_storedProcedures/CheckMaintenanceWindow.sql
2024-03-07 16:52:14 +01:00

77 lines
2.5 KiB
Transact-SQL

USE [HCITools]
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[CheckMaintenanceWindow]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[CheckMaintenanceWindow]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[CheckMaintenanceWindow]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[CheckMaintenanceWindow] AS'
END
GO
ALTER PROCEDURE [dbo].[CheckMaintenanceWindow]
@in_debug int = null,
@in_JobName sysname
AS
/*=============================================================================
Explication du traitement realise par la SP
-------------------------------------------
Cette SP sert à savoir si le job appelant peut s'executer ou s'il est dans la plage de maintenance
Contexte d'utilisation
----------------------
Cette SP est appelée via les jobs [D91040 - Backup of simple databases] et [D91050 - Backup of full databases]
Parametres
----------
@in_debug : non utilisé
Creation : 16.12.20 / FLA
Modifications : 04.05.21 / FLA : changement du comportement par défaut si la centrale n'est pas joignable
18.01.22 / SPE : OCTPDBA-92 : Adapt [HCITools].[dbo].[CheckMaintenanceWindow] stored procedure to get information from the new S10 maintenance windows
=============================================================================*/
set nocount on;
/*------------------- Declaration des variables --------------------*/
declare @DateFROM datetime = '',
@DateTO datetime = ''
/*-------------------------- Traitement ---------------------------*/
BEGIN TRY
SELECT @DateFROM = convert(datetime,[ITCS_value]) FROM [Arizona].[dbo].[IT_config_setting] WHERE [ITCS_key] = 'SCCMMWStart'
SELECT @DateTO = convert(datetime,[ITCS_value]) FROM [Arizona].[dbo].[IT_config_setting] WHERE [ITCS_key] = 'SCCMMWEnd'
IF @DateFROM is not null and @DateTO is not null
BEGIN
IF (GETDATE() BETWEEN convert(datetime,@DateFROM) AND convert(datetime,@DateTO))
BEGIN
EXEC msdb.dbo.sp_stop_job @job_name = @in_JobName
RAISERROR('This server is actually in a SCCM Maintenance window, execution of this job is cancelled!',16,1)
END
END
/*---------------------- Traitement des erreurs ----------------------*/
END TRY
BEGIN CATCH
/* Traitement des erreurs (avec RaiseError) */
EXEC dbo.get_Error_Info @in_RaiseError = 1
END CATCH
GO