過去 XX 分/日などに失敗したジョブを返す SQL Server クエリを作成しようとしています。
基本的に、失敗したジョブごとに、各ステップのメッセージを連結した 1 つのレコードが必要です。以下のクエリを作成しましたが、グループ化により、この特定のインスタンスだけでなく、ジョブ全体に対して 1 つの連結されたメッセージが表示され、解決できません。任意の支援をいただければ幸いです:)
WITH failedJobs
AS ( SELECT j.name ,
DATEADD(SECOND,
( run_time / 10000 ) * 3600 + ( ( run_time - ( ( run_time / 10000 ) * 10000 ) ) / 100 )
* 60 + run_time - ( ( run_time / 100 ) * 100 ),
CONVERT(DATETIME, CONVERT(VARCHAR(8), run_date), 105)) AS run_datetime ,
js.step_name ,
jh.job_id ,
jh.step_id ,
jh.instance_id ,
jh.sql_severity ,
jh.message
FROM msdb.dbo.sysjobs AS j
INNER JOIN msdb.dbo.sysjobsteps AS js ON js.job_id = j.job_id
INNER JOIN msdb.dbo.sysjobhistory AS jh ON jh.job_id = j.job_id
WHERE jh.run_status = 0)
SELECT fj.job_id ,
STUFF(( SELECT CHAR(10) + message
FROM failedJobs fj2
WHERE fj.job_id = fj2.job_id
FOR
XML PATH('') ), 1, 1, '') AS message
FROM failedJobs fj
WHERE DATEDIFF(DAY, run_datetime, GETDATE()) <= 2 -- Last 2 days
GROUP BY fj.job_id;