[SQL Server] Forcer l'arrêt d'un job SQL Server lorsqu'il dépasse une intervalle du temps en secondes

 

-- =============================================

-- Author:      KHARROUBI Zouhaier

-- Create date: 08/11/2020

-- Description: Forcer l'arrêt d'un job SQL Server lorsqu'il dépasse une intervalle du temps en secondes

-- =============================================

 

DECLARE @DureeMaxJobSecondes AS INT=1800 --La durée est en secondes

 

7IF (

SELECT DATEDIFF(SECOND,T1.start_execution_date,GetDate()) AS Seconds

FROM msdb..sysjobactivity T1

JOIN msdb..sysjobs T2 on T2.job_id = T1.job_id

WHERE T1.stop_execution_date IS NULL -- Le job n'étai pas arrêté

AND T1..start_execution_date IS NOT NULL -- Le job est toujours en cours d'exécution

AND T2.name = 'Mon Job SQL Server'

AND NOT EXISTS( -- Vérifier qu'il s'agit de la dernière exécution

     SELECT TOP 1 S1.start_execution_date

     FROM msdb..sysjobactivity S1

     WHERE S1.job_id = T1.job_id

     AND S1.start_execution_date > T1.start_execution_date)

        ) > @DureeMaxJobSecondes

BEGIN

  EXECUTE msdb.dbo.sp_stop_job N'Mon Job SQL Server';

  WAITFOR DELAY '00:00:10';

END