【问题标题】:How to run Sequential Jobs using job schedule in Sql server如何在 Sql server 中使用作业计划运行顺序作业
【发布时间】:2020-03-02 20:23:36
【问题描述】:

我有一个要求,我需要按顺序运行多个作业。假设我有 20 个已经存在的工作。这些工作相互依赖。现在我正在手动运行这些作业,如下所示

运行 Job1 --> 在 Job1 成功时运行 job2/在 Job1 失败时退出下一个进程 --> 在 Job2 成功时运行 job3/在 Job2 失败时退出下一个进程 --> .... 在 Job19 成功时运行 job20/在下一个退出Job19 失败时的处理 --> 退出作业。

除此之外,我还希望拥有所有这些作业的日志历史记录。如果任何作业在中途失败,我想检查日志以查找哪个作业失败以及失败的原因是什么。

现在我想让它自动化。有没有可能的方法呢?

请帮帮我

提前谢谢你 钱达纳

【问题讨论】:

  • 一种方法就是使用 sp_start_job。为每个作业添加一个步骤,确保它是最后一步并让它执行 "exec msdb.dbo.sp_start_job N'>'
  • @TimMylott 的评论是执行此操作的“标准”方式。蒂姆,如果你回答这个问题,我会投赞成票。有时,即使是简短的答案也是正确的答案。
  • @EricBrandt 已添加答案,谢谢

标签: tsql stored-procedures ssis ssms-2014


【解决方案1】:

我假设当您说“工作”时,您的意思是 SQL Server 代理工作。

实现您所追求的一种方法是简单地使用sp_start_job 存储过程。

  1. 在每个作业上添加一个 tsql 作业步骤。
  2. 确保这是最后一步
  3. 然后让它执行下面的代码

    EXEC msdb.dbo.sp_start_job N'下一个要开始的作业的名称'

这是该设置的视觉效果:

然后您可以菊花更改作业并让 Job2 的最后一步启动 Job3 等等...

【讨论】:

  • 充实这一点的方法。良好的视觉效果。
  • 在这种情况下,如果 Job 2 失败,那么它会重新启动 job 1 还是从 job 2 开始?
  • 下次运行时会退出并从第 1 步开始。您也可以从 SSMS 手动运行它并决定从哪个步骤开始。
【解决方案2】:

您可以使用维护计划。

在这个羽毛中,您可以逐步设置任何作业或设置If 语句。

在这张图片中,我向您展示了维护计划的不完整显示:

要创建或管理维护计划,您必须是 sysadmin 固定服务器角色。对象资源管理器仅显示 作为系统管理员成员的用户的维护计划节点已修复 服务器角色。

你可以阅读HOW TO CREATE A MAINTENANCE PLAN HERE

【讨论】:

    最近更新 更多