Обработчики событий в службах Integration Services (SSIS)
Область применения: среда выполнения интеграции SSIS SQL Server в Фабрика данных Azure
Во время выполнения исполняемых объектов (пакетов, контейнеров «цикл по каждому элементу», «цикл по элементам», последовательности и узлы задач) возникают события. Например, в случае ошибки возникает событие OnError. Можно создать пользовательские обработчики событий для этих событий, чтобы расширить функциональность пакетов и упростить управление пакетами во время их выполнения. Обработчики событий могут выполнять следующие задачи:
Очистка временного хранилища данных, когда пакет или задача прекращает выполнение.
Получение сведений о системе для слежения за доступностью ресурса перед запуском пакета.
Обновление данных в таблице, когда уточняющий запрос в ссылочной таблице закончился неудачей.
Отправка сообщения по электронной почте при возникновении ошибки или предупреждения или при неудачном завершении задачи.
Если у события нет обработчика, событие передается контейнеру выше по иерархии контейнеров пакета. Если у этого контейнера есть обработчик, он выполняется в ответ на событие. Если нет, то событие передается контейнеру выше в иерархии контейнеров.
Следующая диаграмма приводит простой пакет, имеющий контейнер «цикл по элементам», который, в свою очередь, содержит задачу «Выполнение SQL».
Только у пакета имеется обработчик для события OnError . Когда ошибка происходит во время выполнения задачи «Выполнение SQL», то запускается обработчик события OnError данного пакета. Следующая диаграмма показывает последовательность вызовов, вследствие которой выполняется обработчик события OnError данного пакета.
Обработчики событий являются элементами коллекции обработчиков событий, и эта коллекция включена во все контейнеры. При создании пакета с помощью конструктора служб SSIS можно увидеть элементы коллекций обработчиков событий в папках обработчиков событий на вкладке обозревателя пакетов конструктора служб SSIS.
Можно настроить контейнер обработчика событий следующим образом:
Укажите имя и описание для обработчика событий.
Укажите, следует ли запускать обработчик событий, следует ли считать выполнение пакета неудачным в случае неудачи выполнения обработчика событий, а также укажите максимальное число ошибок, после которого обработчик считается неудачно завершенным.
Укажите результат выполнения, который будет возвращен вместо действительного результата, возвращаемого обработчиком событий во время выполнения.
Укажите параметр преобразования обработчика события.
Укажите режим создания журнала, используемого обработчиком событий.
Содержимое обработчика событий
Создание обработчика событий сходно с построением пакета: у обработчика есть задачи и контейнеры, которые по порядку включаются в поток управления, и обработчик также может включать в себя потоки данных. Конструктор служб SSIS включает вкладку "Обработчики событий" для создания пользовательских обработчиков событий.
Обработчики событий также могут быть созданы программно. Дополнительные сведения см. в статье Программная обработка событий.
События времени выполнения
В следующей таблице перечислены обработчики событий, предоставляемые службами Integration Services, и описываются события во время выполнения, которые вызывают запуск обработчика событий.
Обработчик событий | Мероприятие |
---|---|
OnError | Обработчик события OnError . Событие вызывается исполняемым объектом при возникновении ошибки. |
OnExecStatusChanged | Обработчик события OnExecStatusChanged . Событие вызывается исполняемым объектом при изменении его состояния выполнения. |
OnInformation | Обработчик события OnInformation . Это событие вызывается во время проверки и выполнения исполняемого объекта для передачи данных. Событие передает только данные; ошибки и предупреждения не передаются. |
OnPostExecute | Обработчик события OnPostExecute . Событие вызывается исполняемым объектом сразу после выполнения. |
OnPostValidate | Обработчик события OnPostValidate . Событие вызывается исполняемым объектом после завершения проверки. |
OnPreExecute | Обработчик события OnPreExecute . Событие вызывается исполняемым объектом непосредственно перед его запуском. |
OnPreValidate | Обработчик события OnPreValidate . Событие вызывается исполняемым объектом в начале проверки. |
OnProgress | Обработчик события OnProgress . Событие вызывается исполняемым объектом в процессе выполнения. |
OnQueryCancel | Обработчик события OnQueryCancel . Событие вызывается исполняемым объектом, чтобы установить, следует ли ему прекратить выполнение. |
OnTaskFailed | Обработчик события OnTaskFailed . Событие вызывается неудачно завершившейся задачей. |
OnVariableValueChanged | Обработчик события OnVariableValueChanged . Событие вызывается исполняемым объектом при изменении значения переменной. Событие вызывается исполняемым объектом, в котором определена переменная. Событие не происходит, если свойство RaiseChangeEvent для этой переменной установлено в значение False. Дополнительные сведения см. в статье Переменные в службах Integration Services (SSIS). |
OnWarning | Обработчик события OnWarning . Событие вызывается исполняемым объектом при возникновении предупреждения. |
Добавление к пакету обработчик событий
При выполнении контейнеров и задач происходят разные события. Возможно создание обработчиков пользовательских событий, которые отвечают на возникающие события запуском рабочего процесса. Например, можно создать обработчик событий, который по электронной почте посылает сообщение, если задача завершается неудачей.
Обработчик событий аналогичен пакету. Как и пакет, обработчик событий обеспечивает область действия для переменных и включает поток управления и потоки данных по выбору. Можно построить обработчик событий для пакетов, контейнера «цикл по каждому элементу», контейнера «цикл по элементам», контейнера последовательности и всех задач.
Вы создаете обработчики событий с помощью области конструктора вкладки "Обработчики событий" в конструкторе служб SSIS.
Если вкладка "Обработчики событий" активна, узлы элементов потока управления и задачи плана обслуживания панели элементов в конструкторе служб SSIS содержат задачу и контейнеры для создания потока управления в обработчике событий. Узлы Источники потока данных, Преобразованияи Назначения потока данных содержат источники данных, преобразования и назначения для построения потоков данных в обработчике событий. Дополнительные сведения см. в разделах Поток управления и Поток данных.
Вкладка Обработчики событий также включает зону диспетчеров Соединения , в которой можно создавать и изменять диспетчеры соединений, используемых обработчиками событий для соединения с серверами и источниками данных. Дополнительные сведения см. в разделе Создание диспетчеров соединений.
Добавление обработчика событий на вкладку "Обработчики событий"
В SQL Server Data Tools (SSDT) откройте проект служб Integration Services, содержащий нужный пакет.
Чтобы открыть пакет, дважды щелкните его в обозревателе решений.
Перейдите на вкладку Обработчики событий .
Создание потока управления и потоков данных в обработчике событий аналогично созданию потока управления и потока данных в пакете. Дополнительные сведения см. в разделах Поток управления и Поток данных.
В списке Исполняемый объект выберите исполняемый объект, для которого создается обработчик события.
В списке Обработчик событий выберите обработчик событий, который необходимо построить.
Щелкните ссылку в области конструктора на вкладке Обработчик событий .
Добавьте элементы потока управления к обработчику событий и подключите элементы, используя управление очередностью (перетаскивая ограничение из одного элемента потока управления в другой). Дополнительные сведения см. в разделе Поток управления.
Дополнительно можно добавить задачу потока данных и в области конструктора на вкладке Поток данных создать поток данных для обработчика событий. Дополнительные сведения см. в статье Поток данных.
Чтобы сохранить пакет, в меню Файл выберите пункт Сохранить выбранные элементы .
Задание свойств обработчика событий
Свойства можно задать в окне свойств SQL Server Data Tools (SSDT) или программно.
Сведения о настройке этих свойств в SQL Server Data Tools (SSDT) см. в разделе "Настройка свойств задачи или контейнера".
Дополнительные сведения о настройке этих свойств программными средствами см. в разделе DtsEventHandler.
Связанные задачи
Сведения о том, как добавить обработчик событий в пакет, см. в разделе Добавление к пакету обработчик событий.