Answers:
无论如何都不是。但是我有一些办法:
它仅适用于消息表sysjobhistory中的情况,显示为字符串:
“执行ID:xxxxxxx”。
在以下查询中,在最后一列中,我提取了ExecutionId。
在ExecutionId具有值的情况下,它可以加入:
SELECT *
FROM (
SELECT
h.step_name,
h.message,
h.run_status,
h.run_date,
h.run_time,
SUBSTRING(h.message, NULLIF(CHARINDEX('Execution ID: ', h.message),0)+14 ,PATINDEX('%[^0-9]%',SUBSTRING(h.message, NULLIF(CHARINDEX('Execution ID: ', h.message),0)+14 ,20))-1) ExecutionId
FROM MSDB.DBO.SYSJOBHISTORY h) history
LEFT JOIN
SSISDB.CATALOG.EXECUTIONS ex on ex.execution_id = history.ExecutionId
请注意,还可以附加以下表:
LEFT JOIN SSISDB.CATALOG.OPERATION_MESSAGES om on history.ExecutionId = om.operation_id
LEFT JOIN SSISDB.CATALOG.EVENT_MESSAGES em on em.operation_id =history.ExecutionId
更新:简短的回答是:有否加入ssisdb.catalog表来运行它们的作业方式。Jamie Thomson在这些文章中有一些不错的信息:
我想,杰米(Jamie)已经在做您想做的事情。请参考sp_ssis_catalog以查看它是否满足您的需求。
我找不到将ssisdb.catalog表加入运行它们的作业的方法。您可以参考以下内容以获得工作名称的一些见解:
Clark Baker的SSIS错误报告电子邮件
简短的回答是
SELECT TOP 200
M.[Message_time],
(SELECT TOP 1 Name from MSDB.dbo.SysJobs J INNER JOIN MSDB.dbo.SysJobSteps S (NOLOCK) ON
J.Job_ID = S.Job_ID WHERE S.Command like '%' + M.[Package_Name] + '%') as Job_Name,
M.[Package_Name],
M.[Execution_path],
M.[Subcomponent_name],
M.[Message]
FROM SSISDB.[catalog].[Event_messages] M (NOLOCK)
WHERE Event_name = 'OnError'
ORDER BY Message_time DESC