Время начала и окончания даты в дочерних пакетах ssis

#sql-server #ssis #sql-server-2017

#sql-server #ssis #sql-server-2017

Вопрос:

Я просматриваю каталог проекта SSIS DB, чтобы найти начальную и конечную дату-время для каждого пакета SSIS, вызываемого из основного пакета. Есть ли какой-либо запрос для выполнения этого?

После просмотра [internal].[executions] и SSISDB.catalog.operation_messages и т.Д

Выполнение этого запроса не работает, если есть главный пакет, вызывающий дочерние пакеты.

 select start_time,end_time,*
from catalog.executions cc order by cc.start_time desc
  

Я пытаюсь найти время начала и окончания для каждого дочернего пакета.

Ответ №1:

CATALOG.EXECUTABLE_STATISTICS DMV регистрирует статистику выполнения компонентов в пакете, включая задачи выполнения пакета. В столбцах START_TIME и END_TIME хранится время начала и завершения выполнения компонента. EXECUTION_DURATION Столбец содержит время, которое потребовалось исполняемому файлу, в данном случае дочерним пакетам, для выполнения в миллисекундах. Это, конечно, может быть преобразовано в секунды, минуты и т.д. В зависимости от того, что вам нужно. Хотя в этом файле есть столбец для пути выполнения компонента в родительском пакете, в нем нет столбца для прямого имени компонента, поэтому он CATALOG.EXECUTABLES включен для EXECUTABLE_NAME , и этот DMV можно опустить, если вместо этого вы хотите просмотреть только путь выполнения ( EXECUTION_PATH столбец). CATALOG.EXECUTIONS содержит столбцы для папки и названия проекта, и вы можете присоединиться к ним, чтобы применить фильтры для конкретного проекта и папки, в которых находится пакет. Вы также можете применить фильтр к EXECUTION_ID столбцу, чтобы просматривать сведения только о конкретном выполнении. Выполнение пакета на базовом уровне ведения журнала с разрешением регистрировать детали выполнения для компонентов.

 SELECT 
    EX.FOLDER_NAME,
    EX.PROJECT_NAME,
    E.EXECUTABLE_NAME,
    EX.PACKAGE_NAME,
    ES.START_TIME AS ComponentStartTime,
    ES.END_TIME AS ComponentEndTime,
    EX.start_time AS PackageStartTime,
    EX.end_time AS PackageEndTime,
    ES.EXECUTION_DURATION AS ComponentExecutionTimeInMilliseconds
FROM SSISDB.CATALOG.EXECUTIONS EX 
INNER JOIN SSISDB.CATALOG.EXECUTABLES E on EX.EXECUTION_ID = E.EXECUTION_ID
INNER JOIN SSISDB.CATALOG.EXECUTABLE_STATISTICS ES on E.EXECUTABLE_ID = ES.EXECUTABLE_ID AND EX.EXECUTION_ID = ES.EXECUTION_ID
--PACKAGE_NAME- parent package
WHERE E.PACKAGE_NAME = 'Package Name.dtsx' AND EX.PROJECT_NAME = 'Project Name' 
AND EX.FOLDER_NAME = 'Folder Name'
  

Комментарии:

1. Какие дубликаты вы получаете? Я запустил это перед публикацией, и никаких проблем не возникло. Являются ли дубликаты, которые вы видите, строками для всех выполнений? Вы можете использовать столбец EXECUTION_ID для проверки наличия конкретного экземпляра выполнения или самого последнего экземпляра с MAX( EXECUTION_ID).

2. возможно, с min и max, кажется, работает лучше, ВЫБЕРИТЕ ex.execution_id, E.PACKAGE_NAME, min (Например,start_time) В КАЧЕСТВЕ времени запуска пакета, max (например,end_time) В КАЧЕСТВЕ времени завершения пакета Из SSISDB. CATALOG.EXECUTIONS EX ВНУТРЕННЕЕ ОБЪЕДИНЕНИЕ SSISDB. КАТАЛОГ.ИСПОЛНЯЕМЫЕ ФАЙЛЫ, НАПРИМЕР,EXECUTION_ID = E.EXECUTION_ID ВНУТРЕННЕГО СОЕДИНЕНИЯ SSISDB. CATALOG.EXECUTABLE_STATISTICS зависит от E.EXECUTABLE_ID = ES.EXECUTABLE_ID —PACKAGE_NAME-родительский пакет, ГДЕ E.PACKAGE_NAME = » группировать по ex.execution_id, например.package_name упорядочивать по ex.execution_id, например.package_name

3. Без каких-либо фильтров для конкретных экземпляров выполнения (EXECUTION_ID) запрос вернет строки для всех выполнений. Под MAX(EXECUTION_ID) для самого последнего я подразумевал использование этого в качестве фильтра в предложении WHERE, например zappysys.com/blog /…

4. вам нужно добавить это при последнем объединении И ПРИМЕР.EXECUTION_ID = ES.EXECUTION_ID

5. @JoeSmith это верно, я, должно быть, не включил это при публикации. Моя ошибка, но хороший улов. Я добавил эту часть к своему ответу, однако, пожалуйста, не помечайте ее как принятую, поскольку она была изначально отключена, и вы упомянули об этом.