Задача мониторить задания когда оно работает на другом сервере. Когда оно отработает запускать следующий шаг. Мониторим мы бэкап лог шипинга (Log shipping backup).

как выглядит задание (job):

первый шаг запускается задание на удаленном севере. второй шаг и третий в цикле проверяет его после этого стартует следующие шаги.

WAITFOR DELAY '00:05:00.000'
set nocount on

if (not object_id('tempdb..#running_jobs') is null)
	drop table #running_jobs

select
    ja.job_id,
    j.name as job_name,
    ja.start_execution_date,      
    isNull(last_executed_step_id,0) + 1 as current_executed_step_id,
    js.step_name
  
INTO #running_jobs
from s0030.msdb.dbo.sysjobactivity ja 
	left join s0030.msdb.dbo.sysjobhistory jh on ja.job_history_id = jh.instance_id
	inner join s0030.msdb.dbo.sysjobs j on ja.job_id = j.job_id
	inner join s0030.msdb.dbo.sysjobsteps js on ja.job_id = js.job_id and isNull(ja.last_executed_step_id,0) + 1 = js.step_id
where ja.session_id = (select top 1 session_id from s0030.msdb.dbo.syssessions order by agent_start_date desc)
			and start_execution_date is not null
			and stop_execution_date is null	

if exists( select * from #running_jobs where job_name = 'SSAS_LSBackup_ax_molniya' )
begin
	print 'Source jobs is still running. Retry.'
	select 1/0
end
else
if (select state from sys.databases where name = 'ax_molniya') <> 0
begin
	declare @state varchar(50)
	select @state = state_desc 	from sys.databases where name = 'ax_molniya'
	print 'Database [ax_molniya] is not ONLINE. Current state : ' + @state + '. Retry.'
	select 1/0
end
else
begin
	print 'Run'
	
end

Пример выполнения

Пока ошибка идёт цикл как только нет ошибки выполняет следующий шаг. ТО есть зацикленное задание

Добавить комментарий

Навигация по записям