;WITH j_max
AS
(
SELECT [RowNum], [JobName], [StepID], [StepName], [StepCommand], [RunStatus], [Message], [RunBeginTime], [RunEndTime]
FROM
(
SELECT ROW_NUMBER() OVER (PARTITION BY j.job_id ORDER BY h.instance_id DESC) AS [RowNum],
j.name AS [JobName],
s.step_id AS [StepID],
s.step_name AS [StepName],
s.command AS [StepCommand],
(case when h.run_status=0 then 'Failed'
when h.run_status= 1 then 'Succeeded'
when h.run_status= 2 then 'Retry'
when h.run_status= 3 then 'Canceled'
else 'Unknown'
end
) AS [RunStatus],
h.[Message] AS [Message],
msdb.dbo.agent_datetime(run_date, run_time) AS [RunBeginTime] ,
h.run_duration / 10000 * 3600 + (h.run_duration % 10000) / 100 * 60 + h.run_duration % 100 AS [RunDurationScd],
DATEADD( s,
(h.run_duration / 10000 * 3600 + (h.run_duration % 10000) / 100 * 60 + h.run_duration % 100),
msdb.dbo.agent_datetime(run_date, run_time)
) AS [RunEndTime]
FROM msdb.dbo.sysjobs j
INNER JOIN msdb.dbo.sysjobsteps s ON j.job_id = s.job_id AND j.enabled = 1 --Only Enabled Jobs
INNER JOIN msdb.dbo.sysjobhistory h ON s.job_id = h.job_id AND s.step_id = h.step_id
--AND h.step_id <> 0 --一个作业所有步骤的累计时间(注s表中step_id均不为0)
) j_max
WHERE j_max.[RowNum]=1
)
SELECT [RunBeginTime],
(N'[192.168.88.125]服务器有Job失败:
[JobName]:' +[JobName]+ N',
[StepName]:' +[StepName]+ N'
[RunBeginTime]:' +CONVERT(CHAR(16), [RunBeginTime], 121) + N'
[Message]:' +[Message]
) AS msgcontent,
'15316967290' AS desttermid
INTO #emap_sm_mt_send
FROM j_max
WHERE [RunStatus]='Failed'
IF EXISTS(SELECT 1 FROM #emap_sm_mt_send WHERE ( DATEDIFF( HH, [RunBeginTime], GETDATE() )<=1
OR DATEDIFF( HH, [RunBeginTime], GETDATE() )>=24
)
)
INSERT INTO [192.168.1.100].emap_mdao.dbo.emap_sm_mt_send(msgcontent ,desttermid)
SELECT msgcontent, desttermid
FROM #emap_sm_mt_send