Получите задание агента SQL Server, которое запустило конкретное выполнение развернутого пакета служб SSIS.

У меня есть пакет SSIS, развернутый в SQL Server, и есть 3 разных задания агента SQL Server, которые запускают этот пакет на разных этапах и по расписанию.

Мой вопрос: если пакет отображается как сбой в каталогах служб Integration Services -> Reports в одном из выполнений, есть ли способ определить, какое задание запускает это выполнение, которое вызвало сбой пакета (не путем перекрестной проверки время сбоя из истории задания и время сбоя выполнения пакета)?


person DJs    schedule 13.12.2018    source источник


Ответы (1)


Это не очень прямолинейно. Основываясь на этом ответе на обмен стеками, вы можете попробовать:

SELECT 
 history.*
,ex.* 
,ex.status
, CASE ex.status
    WHEN 1 THEN 'created'
    WHEN 2 THEN 'running'
    WHEN 3 then 'canceled'
    WHEN 4 then 'failed'
    WHEN 5 then 'pending'
    WHEN 6 then 'ended unexpectedly'
    WHEN 7 then 'succeeded'
    WHEN 8 then 'stopping'
    WHEN 9 then 'completed'
END as job_status
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
WHERE project_name = '<ssisdb_project_name_here>'

В нем много столбцов, которые вы можете игнорировать, заменив * в select. Важная часть — соединить MSDB.DBO.SYSJOBHISTORY с MSDB.DBO.SYSJOBHISTORY.

Кроме того, это работает для режима развертывания проекта, а не для режима развертывания пакетов служб SSIS.

person Prabhat G    schedule 13.12.2018