我的情况是我有1个包(包A)需要大约3分钟才能完成,而另一个包(包B)需要大约4分钟才能完成。我需要包装A每隔5分钟通过一个工作运行,包装B每15分钟运行一次。但是,包B只能在包A完成后运行。
实施例
5-套餐A运行
10-套餐A运行
15-包装A运行,然后包装B
20-套餐A运行
25-套餐A运行
30-包装A运行,然后包装B
有没有办法安排工作以满足上述要求?
非常感谢您的帮助。提前谢谢!
答案 0 :(得分:0)
等待脚本将是
WHILE EXISTS (
SELECT
*
FROM
msdb.dbo.sysjobs_view job
JOIN
msdb.dbo.sysjobactivity activity
ON
job.job_id = activity.job_id
JOIN
msdb.dbo.syssessions sess
ON
sess.session_id = activity.session_id
JOIN
(
SELECT
MAX( agent_start_date ) AS max_agent_start_date
FROM
msdb.dbo.syssessions
) sess_max
ON
sess.agent_start_date = sess_max.max_agent_start_date
WHERE
run_requested_date IS NOT NULL AND stop_execution_date IS NULL
AND job.name = 'package A')
BEGIN
WAITFOR DELAY '00:00:30';
END
如果包A已停止运行,这将每30秒检查一次。
或者,您可以创建一个表来跟踪作业状态,并对其进行写入以跟踪状态。