Had*_*adi 1 sql t-sql sql-server
我有 N 个工作,每个工作有 M 个步骤,可以随时更改(添加/删除一些步骤)。作业有不同的运行时间表。我想要一个查询来获取每个作业的上次运行状态、作业 ID、作业名称。这样做是正确的方法(Job outcome)吗?
这是我使用(稍微调整)来检查作业状态的查询。此变体将为job outcome每个作业选择最后一个。
SELECT
JobName = J.name,
H.*
FROM
msdb.dbo.sysjobs AS J
CROSS APPLY (
SELECT TOP 1
JobName = J.name,
StepNumber = T.step_id,
StepName = T.step_name,
StepStatus = CASE T.run_status
WHEN 0 THEN 'Failed'
WHEN 1 THEN 'Succeeded'
WHEN 2 THEN 'Retry'
WHEN 3 THEN 'Canceled'
ELSE 'Running' END,
ExecutedAt = msdb.dbo.agent_datetime(T.run_date, T.run_time),
ExecutingHours = ((T.run_duration/10000 * 3600 + (T.run_duration/100) % 100 * 60 + T.run_duration % 100 + 31 ) / 60) / 60,
ExecutingMinutes = ((T.run_duration/10000 * 3600 + (T.run_duration/100) % 100 * 60 + T.run_duration % 100 + 31 ) / 60) % 60,
Message = T.message
FROM
msdb.dbo.sysjobhistory AS T
WHERE
T.job_id = J.job_id
ORDER BY
T.instance_id DESC) AS H
ORDER BY
J.name
Run Code Online (Sandbox Code Playgroud)
如果更改TOP 1for TOP 2,那么除了job outcome.
| 归档时间: |
|
| 查看次数: |
7356 次 |
| 最近记录: |