如何实现Azure Data Factory失败管道的无冲突自动重跑?
针对ADF每小时触发管道的失败自动重跑最优方案
方案一:管道级重试 + 单实例并发控制
- 关闭所有活动的重试设置,转而在管道级配置重试:在管道的「重试」选项中设置重试次数(建议2-3次),同时将重试间隔设为大于60分钟(比如65分钟),确保重试任务不会与下一小时的计划触发重叠
- 开启管道的单实例运行:在管道「常规」设置里,将「并发运行」限制为1。这样即使到了计划触发时间,只要上一次管道(包括重试)还在执行,新的触发请求会进入等待队列,不会同时启动多个实例,彻底避免目标锁和重复执行问题
方案二:监控驱动的重跑控制管道
- 关闭原计划触发的自动重试逻辑,创建一个独立的控制管道:
- 控制管道通过
Get Pipeline Runs活动查询目标管道的运行状态,筛选出状态为「InProgress」的实例 - 如果没有正在运行的实例,调用
Execute Pipeline活动触发目标管道的重跑 - 给控制管道配置事件触发:绑定ADF的「管道失败」事件,当目标管道失败时自动启动控制管道;同时设置控制管道的重试间隔(比如30分钟),直到重跑成功或达到最大重试次数
- 控制管道通过
方案三:容器包裹活动+容器级重试
- 将复制数据活动和存储过程活动用Sequence容器或Foreach循环容器(循环次数设为1)包裹
- 在容器级别设置重试规则,同时开启管道的单实例运行:
- 容器级重试只会针对容器内的活动失败进行重试,不会影响整个管道的并发控制
- 单实例运行确保同一时间只有一个管道实例在执行,计划触发的新实例会自动等待上一个完成后再启动
关键注意事项
- 所有方案都建议给存储过程添加事务控制,避免重试过程中产生脏数据
- 方案一的配置成本最低,不需要额外创建管道,适合大多数场景
内容的提问来源于stack exchange,提问作者Eswar Polisetti
相关产品推荐
相关产品推荐

