sql-server - SQL 在 sql 代理中运行多个作业
问题描述
我在 sql 代理作业中有 3 个作业,它们是名称、作业 1、作业 2 和作业 3。
每个作业将在作业内部有几个步骤。
我可以为每个作业手动运行每个。我想创建另一个工作来组合所有这些并按顺序运行。
该作业必须成功完成才能进入下一个作业,依此类推。我看到人们sp_start_job
在存储过程中使用,但我想在代理作业中运行。
有人可以给我建议吗?谢谢你。
我们可以做脚本 sp_start_job 等待第一个作业完成然后运行第二个作业等等
解决方案
选项 1:启动第一个作业,并在每个 Job 的代码末尾添加命令(使用 sp_start_job)执行下一个作业。由于命令出现在最后,它将在其余代码之后执行,假设其余代码是同步运行的简单查询。
选项 2:在主要作业中使用步骤(您也可以不使用步骤,但我喜欢将其分开)并在每个步骤中使用 sp_start_job 执行其中一个作业。
在每一步的开始,使用带有“WAITFOR DELAY '00:00:02';”的简单循环 在循环之外。检查上一个作业是否使用存储过程 sp_help_jobactivity 完成。
如果上一个作业结束,则退出循环并继续,这意味着现在我们将执行下一个作业
选项 3(在大多数情况下很疯狂,可能不推荐):使用主作业中的分布式管理对象 (DMO) 通过 VBS 脚本一个接一个地执行作业。
我希望这能解决您的需求。我很快就会在我的博客上上传完整的代码......
推荐阅读
- c# - .Net Core Middleware - 从请求中获取表单数据
- python - 从 3 个数字中找出最大的数字
- django - 使用带有单个文件上传字段的 Django 将多张图片上传到新闻
- ios - CocoaPods 找不到 pod“Firebase/CoreOnly”的兼容版本
- java - 如何在春天创建一个非阻塞的@RestController webservice?
- java - LDAP 身份验证 NULL
- bash - Apdoc 安装为全局:如何运行它?
- python-3.x - 从子类中的枚举返回值
- c++ - 如何像在资源管理器中以管理员身份启动一样从 cpp 运行程序?
- javascript - 如何在 JavaScript 中获取直接子元素(不使用 jQuery)?