Каталог SQL Server 2012. Выполнение в sysjobhistory - любой способ присоединиться к ним?

9

Я исчерпал свои ресурсы и не могу найти надежного способа присоединения таблиц ssisdb.catalog к заданиям, которые их выполняют. Попытка написать несколько пользовательских sprocs для мониторинга моего времени выполнения и строк, записанных из таблиц каталога, и было бы очень полезно иметь возможность связать их вместе с вызывающим заданием.

Я пытаюсь выяснить, есть ли какие-либо таблицы, которые можно использовать для присоединения таблицы catalog.executions к msdb.sysjobhistory. Мне нужно определить, какое задание называется пакетом служб SSIS, а затем использовать данные в выполнении для моего анализа.

Кейт Донохью
источник

Ответы:

5

Не для любого случая. Но у меня есть какой-то способ:

Он предназначен только для случая в таблице сообщений sysjobhistory, появляется строка:

Msgstr "Код исполнения: ххххххх".

В следующем запросе в последнем столбце я извлекаю 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 
Refael
источник
2

Обновление: краткий ответ: НЕТ способа объединить таблицы ssisdb.catalog с заданиями, которые их запускают. В этих статьях Джейми Томсон есть хорошая информация :

Я думаю, то, что вы пытаетесь сделать, уже делается Джейми. Обратитесь к sp_ssis_catalog, чтобы увидеть, отвечает ли он вашим потребностям или нет.

Я не нашел способа соединить таблицы ssisdb.catalog с заданиями, которые их запускают. Чтобы получить представление о работе, вы можете обратиться к следующему:

Сообщение об ошибке служб SSIS по электронной почте от Clark Baker

Кин Шах
источник
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
Марк Морроу
источник