You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Control-M的On-Do Actions分析SQL Server输出实现批作业状态判断

问题原因

你当前配置出现两个动作同时触发的核心原因有两个:

  1. 你编写了3条独立的SELECT查询语句,当批次不存在时,TotalJobs为0的同时StartedJobs也会为0,两条On-Do规则会同时命中;
  2. 你使用了Statement: *的通配匹配,会匹配所有查询语句的返回结果,且没有配置规则互斥,导致多个动作同时执行。

解决方案

完全可以通过Control-M的On-Do Actions实现该逻辑,按以下步骤调整即可:

1. 合并SQL查询为单条语句

将3条独立查询合并为1条,直接返回唯一状态标识,避免多结果匹配冲突:

SELECT 
  CASE 
    -- 批次不存在的场景
    WHEN COUNT(JobNum) = 0 THEN 'NO_BATCH'
    -- 所有作业都已完成(无Started状态作业)的场景
    WHEN SUM(CASE WHEN JobStat = 'Started' THEN 1 ELSE 0 END) = 0 THEN 'ALL_COMPLETED'
    -- 仍有作业在运行的场景
    ELSE 'RUNNING'
  END AS BATCH_STATUS
FROM Process
WHERE Batch = 'ABC'

2. 按优先级配置互斥的On-Do规则

调整规则如下,注意开启每条规则的「匹配成功后停止后续规则校验」选项(Control-M中对应配置项为Stop if True):

  • 第一条规则(最高优先级,匹配批次不存在场景)
    Statement: 1
    Code: NO_BATCH
    Action: Set-NotOK
    勾选 Stop if True
    
  • 第二条规则(次优先级,匹配所有作业完成场景)
    Statement: 1
    Code: ALL_COMPLETED
    Action: Set-OK
    勾选 Stop if True
    
  • 仍有作业运行的场景不需要额外配置规则,Cyclic作业会自动按照你设定的5分钟间隔触发下一次执行。

注意事项

不要使用Statement: *的通配匹配,指定对应查询的Statement编号(这里是1,因为只有一条查询语句),可以进一步避免匹配错误。


内容的提问来源于stack exchange,提问作者Smeckop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 01:06:02