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