У меня есть пакет служб SSIS, настроенный для ведения журнала на SQL Server. С настроенным пакетом системная таблица создается в: MyDatabase > System Tables > dbo.sysssislog
Эта таблица имеет схему, соответствующую таблица с таким же именем, хранящаяся в базе данных msdb.
В этой таблице каждое выполнение пакета имеет уникальный executionid
, который определяется как:
уникальный идентификатор
GUID исполняемого экземпляра исполняемого файла, сгенерировавшего запись журнала.
Это создается каждый раз, когда пакет SSIS запускается и сохраняется в течение следующих системная переменная: System::ExecutionInstanceGUID
Пример запроса Журналы:
SELECT [event] ,
[source] ,
[executionid] ,
[starttime] ,
[endtime]
FROM MyDatabase.[dbo].[sysssislog]
WHERE [event] IN ( 'PackageEnd', 'PackageStart' )
ORDER BY id desc, starttime
Производит:
event source starttime endtime executionid
PackageEnd Package 2017-04-10 11:12:01 2017-04-10 11:12:01 4EDBF979-5E99-44DB-AA08-839D5DCF3F2F
PackageStart Package 2017-04-10 11:12:01 2017-04-10 11:12:01 4EDBF979-5E99-44DB-AA08-839D5DCF3F2F
PackageEnd Package 2017-04-05 13:39:11 2017-04-05 13:39:11 9E212747-3CB7-44D8-8728-9E442082DB8B
PackageStart Package 2017-04-05 13:39:11 2017-04-05 13:39:11 9E212747-3CB7-44D8-8728-9E442082DB8B
В моем приложении я использую различные Хранимые процедуры задания агента SQL Server для получения сведений о задании SSIS и истории. Например:
EXEC msdb.dbo.sp_help_jobhistory
@job_name = N'MyJobName',
@step_id = null
GO
Выдает (сумма столбцов, 1 исполнение = 3 строки):
job_id job_name run_date run_time run_duration
52916CFE-A652-4AAA-A052-738E4B349966 MyJobName 20170410 111145 16
52916CFE-A652-4AAA-A052-738E4B349966 MyJobName 20170410 111200 1
52916CFE-A652-4AAA-A052-738E4B349966 MyJobName 20170410 111145 15
52916CFE-A652-4AAA-A052-738E4B349966 MyJobName 20170405 133855 16
52916CFE-A652-4AAA-A052-738E4B349966 MyJobName 20170405 133910 1
52916CFE-A652-4AAA-A052-738E4B349966 MyJobName 20170405 133855 15
Я создаю страницу администратора ETL в своем приложении, которая показывает историю заданий SSIS и сводку журналов, но я не могу найти способ связать журналы на основе уникального executionid
с историей заданий, возвращаемой из различных систем заданий агента. Хранимые процедуры.
Есть ли способ связать executionid
из sysssislog
с информацией, хранящейся в истории выполнения заданий агента? Лучшее, что я могу придумать, — это использовать сопоставление даты и времени для определения журналов, наиболее близких по времени к статистике заданий агента.
Я рассмотрел возможность использования задач сценариев и запуска пользовательских событий для записи System::ExecutionInstanceGUID
в историю заданий агента, но я не могу использовать задачи сценариев, поскольку они не будут работать при развертывании для клиентов с более поздними версиями SQL Server.
Обратите внимание: любые решения должны быть совместимы с 2008R2.