【问题标题】:SQL Run multiple jobs in sql agentSQL 在 sql 代理中运行多个作业
【发布时间】:2020-04-10 19:33:20
【问题描述】:

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

每个作业在作业中都会有几个步骤。

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

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

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

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

【问题讨论】:

    标签: sql-server sql-agent


    【解决方案1】:

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

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

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

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

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

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

    更新:if the above short description does not clear then I uploaded a full example of the first two solutions

    【讨论】:

    • 感谢您的帮助。但是对于新手来说解决方案太复杂了。
    • 不客气@Tsang。事实上,这是非常简单且非常常见的解决方案。我将此作为第一部分发布。在博客的第二部分(我有时间的另一篇博文)中,我将展示如何更有效地提高性能(使用我的逻辑),然后您将看到一个复杂的解决方案:-)
    • 在我的 Facebook 页面上有人回复了这篇文章,所以我已经在那里解释了我在上面评论中提到的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多