【发布时间】:2016-09-27 12:42:25
【问题描述】:
我想查看我的 sql 作业,其中包含
name
job_id
run_date
LastSuccessfulRunDate
这是我最后一次成功运行的日期。 就像一个魅力,但我在这里,未能添加最后运行日期。
Use msdb
GO
SELECT
SJ.NAME AS [Job Name]
,RUN_STATUS AS [Run Status]
,MAX(DBO.AGENT_DATETIME(RUN_DATE, RUN_TIME)) AS [Last Time Job Ran On]
FROM
dbo.SYSJOBS SJ
LEFT OUTER JOIN dbo.SYSJOBHISTORY JH
ON SJ.job_id = JH.job_id
WHERE JH.step_id = 0
AND jh.run_status = 1
GROUP BY SJ.name, JH.run_status
ORDER BY [Last Time Job Ran On] DESC
GO
这是我到目前为止得到的结果,但它在两行中给出了结果,一行是最后一次运行日期,另一行是最后一次成功运行(这也是不正确的,因为它选择了最高的日期 - 不同的值)。我恳请帮助以使加入正确并在一行中获得结果。
USE msdb
GO
SELECT DISTINCT SJ.Name AS JobName,
SJH.run_date AS LastRunDate,
SJH.job_id,
(SELECT MAX(DBO.AGENT_DATETIME(RUN_DATE, RUN_TIME))
FROM sysjobs
RIGHT JOIN sysjobhistory
ON SJ.job_id = SJH.job_id
WHERE SJH.run_status = 1) AS LastSuccessfulRun,
CASE SJH.run_status
WHEN 0 THEN 'Failed'
WHEN 1 THEN 'Successful'
WHEN 3 THEN 'Cancelled'
WHEN 4 THEN 'In Progress'
END AS LastRunStatus
FROM sysjobhistory SJH, sysjobs SJ
WHERE SJH.job_id = SJ.job_id and SJH.run_date =
(SELECT MAX(SJH.run_date) FROM sysjobhistory SJH WHERE SJ.job_id = SJH.job_id)
【问题讨论】:
-
你好 jrdev22。如果您想出了解决问题的方法,则不应编辑您的问题并添加答案。相反,回答您自己的问题(即,添加您的解决方案作为答案)。然后将其标记为已接受(单击✔),以便人们知道您的问题已得到解决(参见stackoverflow.com/help/someone-answers)。然后其他人可以为您的答案投票,这样您就可以得到一些分数。
标签: sql sql-server sql-server-2016 sql-job