Привет всем, есть ли способ получить список всех неудачных пакетов в любую конкретную дату, можем ли мы сделать это с помощью SQL-запроса? Мы используем SSIS 2017.


Привет, попробуйте этот 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'
Это не будут конкретно неудачные пакеты SSIS, это будут неудачные задания агента SQL. SSIS и агент SQL — это две совершенно разные вещи. Если пакет также вызывается через T-SQL (что очень легко сделать в SQL Server 201+ с SSISDB), этот сценарий не предоставит информацию об этих ошибках.
Предполагая, что пакет развернут в SSISDB и запущен из каталога, запросите DMV SSISDB.CATALOG.EXECUTIONS для выполнения со статусом 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'
Пожалуйста, ознакомьтесь с dba.stackexchange.com/questions/88810/…