[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