即使“退出作业报告成功”,sql代理作业run_status = 0

时间:2016-07-12 11:07:12

标签: sql-server scom

我们正在使用MS SCOM来监视ms sql代理作业的结果。

目前,如果任何步骤失败,我们会收到错误。

开发人员说这是错误的,只有当整个工作失败时我们才应该提醒,即使某些步骤不起作用

确定

我用1步创建测试作业,这将导致错误。

test job

让我们找到工作和结果:

SELECT
    j.name,
    j.job_id,
    jh.step_id,
    jh.step_name,
    jh.run_status,

    CASE jh.run_status
        WHEN 0 THEN 'Failed'
        WHEN 1 THEN 'Succeeded'
        WHEN 2 THEN 'Retry'
        WHEN 3 THEN 'Canceled'
        WHEN 4 THEN 'Running'
        ELSE 'Unknown'
    END AS run_statusstring,
    j.enabled,
    jh.message,
    msdb.dbo.agent_datetime(
    CASE WHEN jh.run_date = 0 THEN NULL ELSE jh.run_date END,
    CASE WHEN jh.run_time = 0 THEN NULL ELSE jh.run_time END) AS last_runtime
FROM msdb.dbo.sysjobhistory jh
INNER JOIN (
    SELECT DISTINCT jh.job_id, MAX(jh.instance_id) instance_id
    FROM msdb.dbo.sysjobhistory jh
    WHERE jh.step_id != 0
    GROUP BY jh.job_id
) AS a
ON jh.job_id = a.job_id
    AND a.instance_id = jh.instance_id
INNER JOIN msdb.dbo.sysjobs AS j
ON jh.job_id = j.job_id

无论如何run_status = 0(失败)

为什么呢?我不是DBA,但逻辑在哪里?为什么'辞掉工作......'不工作?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,发现一个步骤(step_id&lt;&gt; 0)的run_status被记录为失败,但作业本身的run_status(step_id = 0)被记录为成功,如果你的话。< / p>