大家好,有什么方法可以在任何特定日期获取所有失败包的列表,我们可以用 SQL 查询来做到这一点吗?我们正在使用 SSIS 2017 。
2 回答
2
假设程序包已部署到 SSISDB 并从目录运行,请在SSISDB.CATALOG.EXECUTIONS
DMV 中查询状态为 4 的执行。状态为 4 的程序包导致失败,如文档中所述。由于该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'
于 2019-01-22T15:03:58.237 回答
1
嗨,试试这个 sql 查询 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'
于 2019-01-22T07:17:51.337 回答