28 lines
799 B
Transact-SQL
28 lines
799 B
Transact-SQL
DECLARE @tpl VARCHAR(255)='exec [msdb].[dbo].[sp_start_job] @job_name= ''@job@''; '+CHAR(13)+CHAR(10)
|
|
DECLARE @q VARCHAR(MAX)='';
|
|
|
|
WITH cteActivity AS (
|
|
SELECT job_id, session_id, ROW_NUMBER()OVER(PARTITION BY job_id ORDER BY start_execution_date DESC) AS rnk
|
|
FROM msdb.dbo.sysjobactivity
|
|
)
|
|
|
|
SELECT @q = @q + REPLACE(@tpl, '@job@', j.name)
|
|
FROM msdb.dbo.sysjobs j
|
|
WHERE name LIKE 'ActivePosTran distribution agent -%'
|
|
AND NOT EXISTS(
|
|
--the job is currently running
|
|
SELECT 1
|
|
FROM msdb.dbo.sysjobactivity sja
|
|
JOIN cteActivity ca ON ca.job_id = sja.job_id AND ca.session_id = sja.session_id
|
|
WHERE sja.job_id = j.job_id
|
|
AND ca.rnk=1
|
|
AND sja.start_execution_date IS NOT NULL
|
|
AND sja.stop_execution_date IS NULL
|
|
)
|
|
|
|
IF NULLIF(@q,'') IS NOT NULL
|
|
BEGIN
|
|
PRINT @q
|
|
select @q
|
|
EXEC(@q)
|
|
END |