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

时间:2019-04-09 04:52:25

标签: 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

我正在尝试查找每个儿童pacakge的开始时间和结束时间。

2 个答案:

答案 0 :(得分: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'

答案 1 :(得分:3)

userfl89应该得到以上几点,建议稍加修改,查看所有这些子组件任务以进行查询,只需要在开始和结束时就可以了,不确定是否有更好的编写或优化查询的方法,可以随时提出新的建议答案,

更新问题:如果子程序包尚未完成,则需要将结束日期留空,这将显示数据流或子组件的最后结束时间

SELECT 
ex.execution_id,
E.PACKAGE_NAME,
min(Es.start_time) AS PackageStartTime,
max(Es.end_time) AS PackageEndTime
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'
group by ex.execution_id, e.package_name
order by ex.execution_id, e.package_name