【问题标题】:Query msdb sysjobhistory and join to the failed package on Integration Services Catalog查询 msdb sysjobhistory 并加入到集成服务目录上的失败包
【发布时间】:2015-11-18 08:49:04
【问题描述】:

我目前有一个查询,它从 msdb sysjobhistory 中提取有关失败作业的数据。 这很好用,但是关于包失败原因的错误消息没有用,因为它会将我发送到集成服务目录以获取错误消息。我希望有一个查询来获取作业名称、失败的步骤以及失败的原因。

我使用下面的查询来获取失败的作业。请您帮我完成查询。

USE MSDB
GO

SELECT j.name JobName,h.step_name StepName, 
--CONVERT(CHAR(10), CAST(STR(h.run_date,8, 0) AS dateTIME), 111) AS RunDate, 
CONVERT(DATETIME, CONVERT(CHAR(8), h.run_date, 112) + ' ' + CONVERT(CHAR(8), STUFF(STUFF(RIGHT('000000' + CAST ( h.run_time AS VARCHAR(6 ) ) ,6),5,0,':'),3,0,':'), 108)) AS RunDate,
--h.run_date,
STUFF(STUFF(RIGHT('000000' + CAST ( h.run_time AS VARCHAR(6 ) ) ,6),5,0,':'),3,0,':') AS RunTime, 
STUFF(STUFF(RIGHT('000000' + CAST ( h.run_duration AS VARCHAR(6 ) ) ,6),5,0,':'),3,0,':') AS RunDuration, 
STUFF(STUFF(RIGHT('000000' + CAST ( h.run_duration AS VARCHAR(6 ) ) ,6),5,0,':'),3,0,':') AS 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,
    H.Server
    --INTO Maintenance.dbo.Intergration_Logs
    FROM sysjobhistory h inner join sysjobs j
    ON j.job_id = h.job_id
    --WHERE h.run_date = CONVERT(VARCHAR(10),GETDATE(),112)

【问题讨论】:

  • 为什么要同时使用 MySQL 和 MS SQL Server 标签?请不要标记未涉及的产品...
  • 抱歉只是想找到解决办法

标签: sql sql-server ssis


【解决方案1】:

有关作业失败原因的信息存储在 sysjobhistory 中。

如果您正在寻找一些直截了当的内容,并为您提供工作失败时需要知道的基本信息(工作名称、失败的步骤以及失败的原因),例如这可能有效:

WITH T1 AS (SELECT [job_id], [instance_id], [message]
    FROM sysjobhistory
    WHERE run_status = 0 AND step_name = '(Job Outcome)')
, T2 AS (SELECT [job_id], [instance_id]
    FROM T1
    WHERE [message] NOT LIKE '%the last step to run was%'
    UNION
    SELECT jh.[job_id], jh.[instance_id]
    FROM  sysjobhistory jh
    JOIN T1 ON T1.[instance_id] - 1 = jh.[instance_id]
    WHERE T1.[message] LIKE '%the last step to run was%')
SELECT j.[name], jh.[step_id], jh.[step_name], jh.[message]
FROM sysjobs j
JOIN sysjobhistory jh ON jh.[job_id] = j.[job_id]
JOIN T2 ON T2.[instance_id] = jh.[instance_id]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    相关资源
    最近更新 更多