Задача мониторить задания когда оно работает на другом сервере. Когда оно отработает запускать следующий шаг. Мониторим мы бэкап лог шипинга (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
Пример выполнения
Пока ошибка идёт цикл как только нет ошибки выполняет следующий шаг. ТО есть зацикленное задание