我们正在使用MS SCOM来监视ms sql代理作业的结果。
目前,如果任何步骤失败,我们会收到错误。
开发人员说这是错误的,只有当整个工作失败时我们才应该提醒,即使某些步骤不起作用
确定
我用1步创建测试作业,这将导致错误。
让我们找到工作和结果:
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,但逻辑在哪里?为什么'辞掉工作......'不工作?
答案 0 :(得分:0)
我遇到了同样的问题,发现一个步骤(step_id&lt;&gt; 0)的run_status被记录为失败,但作业本身的run_status(step_id = 0)被记录为成功,如果你的话。< / p>