获取特定日期所有失败的SSIS软件包的列表

时间:2019-01-22 06:49:28

标签: sql sql-server ssis ssis-2017

大家好,我们有什么方法可以获取特定日期所有失败软件包的列表,我们可以通过SQL查询来做到这一点吗? 我们正在使用SSIS 2017。

2 个答案:

答案 0 :(得分:2)

假设将软件包部署到SSISDB并从目录中运行,请查询SSISDB.CATALOG.EXECUTIONS DMV以获取状态为4的执行。状态{4}的软件包导致失败,如{{3}中所指定}。由于start_time列的日期类型为datetimeoffset,并且我假设您只想按日期而不是时间查询包是否失败,因此该列按顺序转换为以下日期将其默认设置为午夜。

SELECT EXECUTION_ID
      ,FOLDER_NAME
      ,PROJECT_NAME
      ,PACKAGE_NAME
      ,REFERENCE_ID
      ,REFERENCE_TYPE
      ,ENVIRONMENT_FOLDER_NAME
      ,ENVIRONMENT_NAME
      ,[OBJECT_ID]
      ,[STATUS]
      ,START_TIME
      ,END_TIME
      ,CALLER_SID
      ,CALLER_NAME
      ,SERVER_NAME
      ,MACHINE_NAME
FROM SSISDB.CATALOG.EXECUTIONS
--4 for failed packages
WHERE [STATUS] = 4 AND CAST(START_TIME AS DATE) = '2019-01-01'

答案 1 :(得分:1)

您好,请为SQL代理作业Link尝试以下sql查询:

SELECT sj.name,
        sh.run_date,
        sh.step_name,
        STUFF(STUFF(RIGHT(REPLICATE('0', 6) +  CAST(sh.run_time as varchar(6)), 6), 3, 0, ':'), 6, 0, ':') 'run_time',
        STUFF(STUFF(STUFF(RIGHT(REPLICATE('0', 8) + CAST(sh.run_duration as varchar(8)), 8), 3, 0, ':'), 6, 0, ':'), 9, 0, ':') 'run_duration (DD:HH:MM:SS)  ',
        sh.run_status
FROM msdb.dbo.sysjobs sj
JOIN msdb.dbo.sysjobhistory sh
    ON sj.job_id = sh.job_id
WHERE sh.run_status = 0
AND sh.run_date = '20190122'