首页 > 解决方案 > SQL 在 sql 代理中运行多个作业

问题描述

我在 sql 代理作业中有 3 个作业,它们是名称、作业 1、作业 2 和作业 3。

每个作业将在作业内部有几个步骤。

我可以为每个作业手动运行每个。我想创建另一个工作来组合所有这些并按顺序运行。

该作业必须成功完成才能进入下一个作业,依此类推。我看到人们sp_start_job在存储过程中使用,但我想在代理作业中运行。

有人可以给我建议吗?谢谢你。

我们可以做脚本 sp_start_job 等待第一个作业完成然后运行第二个作业等等

标签: sql-serversql-agent

解决方案


选项 1:启动第一个作业,并在每个 Job 的代码末尾添加命令(使用 sp_start_job)执行下一个作业。由于命令出现在最后,它将在其余代码之后执行,假设其余代码是同步运行的简单查询。

选项 2:在主要作业中使用步骤(您也可以不使用步骤,但我喜欢将其分开)并在每个步骤中使用 sp_start_job 执行其中一个作业。

在每一步的开始,使用带有“WAITFOR DELAY '00:00:02';”的简单循环 在循环之外。检查上一个作业是否使用存储过程 sp_help_jobactivity 完成。

如果上一个作业结束,则退出循环并继续,这意味着现在我们将执行下一个作业

选项 3(在大多数情况下很疯狂,可能不推荐):使用主作业中的分布式管理对象 (DMO) 通过 VBS 脚本一个接一个地执行作业。

我希望这能解决您的需求。我很快就会在我的博客上上传完整的代码......

更新:如果上面的简短描述不清楚,那么我上传了前两个解决方案的完整示例


推荐阅读