ssis子包中的开始和结束日期时间

问题描述 投票:4回答:2

我正在查看SSIS DB项目目录,以查找从主程序包调用的每个SSIS程序包的开始和结束日期时间。有没有任何疑问来执行此操作?

看了[内部]。[执行]和SSISDB.catalog.operation_messages等

如果我有一个调用子包的主包,则运行此查询不起作用。

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

我想找到每个儿童套餐的开始和结束时间。

sql-server ssis sql-server-2017
2个回答
4
投票

CATALOG.EXECUTABLE_STATISTICS DMV记录包中组件的执行统计信息,包括执行包任务。 START_TIMEEND_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'
© www.soinside.com 2019 - 2024. All rights reserved.