SQL Server 2012 catalog.execution到sysjobhistory-以任何方式加入它们?


9

我已经用光了资源,无法找到一种将ssisdb.catalog表加入运行它们的作业的简便方法。尝试编写一些自定义的sproc来监视我的执行时间和从目录表中写入的行,并且能够将它们与调用作业绑定在一起将非常有益。

我试图找出是否有可用于将catalog.executions表连接到msdb.sysjobhistory的表。我需要关联哪个作业称为SSIS包,然后在执行中使用数据进行分析。

Answers:


5

无论如何都不是。但是我有一些办法:

它仅适用于消息表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 

2

更新:简短的回答是:有加入ssisdb.catalog表来运行它们的作业方式。Jamie Thomson在这些文章中有一些不错的信息:

我想,杰米(Jamie)已经在做您想做的事情。请参考sp_ssis_catalog以查看它是否满足您的需求。

我找不到将ssisdb.catalog表加入运行它们的作业的方法。您可以参考以下内容以获得工作名称的一些见解:

Clark Ba​​ker的SSIS错误报告电子邮件


0

简短的回答是

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.