Состояние выполнения захвата СПЕЦИАЛЬНОЙ задачи в SSIS 2012 - PullRequest
2 голосов
/ 19 апреля 2019

У меня есть пакет служб SSIS, который содержит 5 контейнеров задач последовательности и внутри этой другой задачи потока управления.все работают параллельно.

Я пытаюсь получить всю информацию аудита и метаданных, такую ​​как имя пакета, имя задачи и текущий статус задачи (выполняется, завершена или не выполнена).

Большая проблема iЯ чувствую, что как обработать, как только статус задачи изменился.

эту информацию я пытаюсь сохранить в таблице sql

имя пакета, которое я могу получить из системной переменной, как получить текущийстатус задания.

Я пытаюсь сохранить значение состояния, такое как «начало», «в процессе», «конец».

Может кто-нибудь, пожалуйста, поделитесь своими мыслями.

Спасибо

1 Ответ

2 голосов
/ 19 апреля 2019

Вы можете зафиксировать изменение состояния задачи с помощью обработчиков событий служб SSIS.Для этого щелкните на самой задаче, а затем на вкладке Event Handlers в верхней части окна времени разработки.Откроется пустое окно с синей ссылкой в ​​середине страницы, как показано ниже:

Control-Flow level Task Event Handles

Прежде чем нажать на синюю ссылку, выберитеопределенный обработчик событий, который вы хотите обработать:

enter image description here

Отсюда вы можете выполнять определенные задачи.Например, вы можете запустить почтовую задачу SMTP в обработчике событий OnError, чтобы отправить уведомление по электронной почте об ошибке задачи.Или вы можете запустить задачу «Выполнение SQL» в обработчике событий OnPostExecute, чтобы отправить данные в базу данных после завершения задачи.

Я думаю, что для вашей конкретной проблемы (как получить время выполнения для задачи) выпотребуются два обработчика событий:

  1. OnPreExecute : захват значения системного времени и даты с помощью GETDATE () и запись его в таблицу SQL как SequenceContainerTaskNameStartTs
  2. OnPostExecute : захватить системное значение даты и времени с помощью GETDATE () и записать его в таблицу SQL как SequenceContainerTaskNameEndTs

, где 'Ts' обозначает TimeStamp.

Затем вы можете рассчитать время выполнения с помощью функции DATEDIFF () и указать интервал времени (например, секунды, минуты, часы и т. Д.).Это значение может быть либо сохранено в отдельном поле таблицы (т. Е. SequenceContainerRunTime), либо просто сгенерировано на лету в SQL SELECT.

Подробнее о обработчиках событий служб SSIS читайте здесь:

Обработчики событий служб Integration Services (SSIS)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...