2017-01-12 6 views
-1

このスクリプトを修正して、各ジョブ名の最新の実行のみを選択する方法はありますか?特定の値のT-SQLの場所

SELECT 
    j.name JobName, 
    h.step_name StepName, 
    CONVERT(CHAR(10), CAST(STR(h.run_date,8, 0) AS dateTIME), 111) RunDate, 
    STUFF(STUFF(RIGHT('000000' + CAST (h.run_time AS VARCHAR(6)), 6), 5, 0, ':'), 3, 0, ':') RunTime, 
    h.run_duration StepDuration, 
    case h.run_status 
     when 0 then 'failed' 
     when 1 then 'Succeded' 
     when 2 then 'Retry' 
     when 3 then 'Cancelled' 
     when 4 then 'In Progress' 
    end as ExecutionStatus, 
    h.message MessageGenerated 
FROM 
    sysjobhistory h 
INNER JOIN 
    sysjobs j ON j.job_id = h.job_id 
ORDER BY 
    j.name, h.run_date DESC 
GO 

答えて

0

あなたの必要性につきとして..

SELECT j.name JobName,h.step_name StepName, 
CONVERT(CHAR(10), CAST(STR(h.run_date,8, 0) AS dateTIME), 111) RunDate, 
STUFF(STUFF(RIGHT('000000' + CAST (h.run_time AS VARCHAR(6)) ,6),5,0,':'),3,0,':') RunTime, 
h.run_duration StepDuration, 
case h.run_status when 0 then 'failed' 
when 1 then 'Succeded' 
when 2 then 'Retry' 
when 3 then 'Cancelled' 
when 4 then 'In Progress' 
end as ExecutionStatus, 
h.message MessageGenerated 
sysjobs j 
cross apply 
(
select top 1 b.columns you need 
from sys.jobhistory b where b.job_id=j.job_id 
order by RunDate desc 
) h 
+0

によって変更するため、このスクリプトは動作しません。 – lassedev

+0

作業していないと精緻化できますか?ジョブ履歴から列を選択する必要があります – TheGameiswar

関連する問題