Пример использования задачи WMI Event Watcher Task
Предположим, что нам нужно отследить, когда на нашем компьютере завершит работу процесс с именем WinRAR.exe, и сразу после этого выполнить действия в пакете SSIS. Для простоты эти действия будет символизировать задача Script Task, которая выводит стандартное окно сообщения. Решение нашей задачи может выглядеть так:
1. Создаем новый пустой пакет SSIS.
2. Перетаскиваем на вкладку Control Flow из Toolbox элемент WMI Event Watcher Task и открываем его свойства (команда Edit в контекстном меню), а затем переходим на вкладку WMI Options.
3. В списке напротив свойства WmiConnection выбираем пункт New WMI Connection и настраиваем свойства создаваемого менеджера подключений WMI Connection Manager (см.рис. 9.10).

Рис. 9.8. Настройка WMI Connection Manager
4. Выбираем нужный источник запроса при помощи свойства WmiQuerySourceType (в нашем примере - Direct Input), а затем вводим текст запроса как значение для свойства WqlQuerySource, например:
select * from __instancedeletionevent within 1
where TargetInstance isa 'Win32_Process' AND TargetInstance.Name = 'WinRAR.exe'
Этот запрос с интервалом в 1 секунду будет опрашивать объект Win32_Process на предмет завершения работы процесса с именем WinRAR.exe.
5. Для свойства ActionAtEvent настраиваем значение Log the event and fire the SSIS Event— чтобы при возникновении события WMI информация о нем не только записывалась в протокол выполнения пакета, но и срабатывало событие пакета. Для остальных свойств задачи WMI Event Watcher Task можно оставить значения по умолчанию.
6. Перейти в WMI Designer на вкладку Event Handlersи всписке Executable выбрать WMI Event Watcher Task, а в списке Event Handler— событийную процедуру WMIEventWatcherEventOccured и щелкнуть мышью по ссылке Click here to create a "WMIEventWatcherEventOccured" event handler...
7. Настроить реакцию на событие в виде задачи Script Task. Для этого нужно перетащить из Toolbox на открывшееся розовое поле на вкладке Event Handlers задачу Script Task и настроить ее свойства. На вкладке Script свойств этой задачи нужно нажать на кнопку Design Script и ввести требуемый код для процедуры Main(). Например:
Public Sub Main()
MsgBox("Сработало событие WMI!")
Dts.TaskResult = Dts.Results.Success
End Sub
8. Запустить пакет на выполнение. Как только мы запустим и потом закроем WinRAR, сразу же сработает событийная процедура со Script Task (см. рис. 9.11).

Рис. 9.11. Наш пакет среагировал на завершение разархивирования
Контейнеры SSIS
Контейнеры — это специальные задачи Control Flow, которые предназначены для размещения в них других задач Control Flow. В основном контейнеры используются для организации циклов в пакетах. В SSIS предусмотрено четыре типа контейнеров:
1. For Loop;
2. Foreach Loop;
3. Sequence;
Task Host.
Все контейнеры доступны в Toolbox на вкладке Control Flow, кроме Task Host. Этот контейнер создается автоматически для любой задачи и используется для хранения значений свойств, настроенных на графическом экране SSIS Designer для этой задачи. Его невозможно увидеть в SSIS Designer — обращение к нему возможно только из программного кода.
Контейнер For Loop
Этот контейнер предназначен для организации цикла. Для этого контейнера предусмотрено три главных свойства:
1. InitExpression — определяет исходное значение счетчика. Например, если в нашем пакете определена целочисленная переменная Counter, то значение этого свойства может выглядеть как @Counter = 0;
2. EvalExpression — проверяемое выражение. Цикл будет выполняться до тех пор, пока это выражение возвращает истину. Например, если нам нужно выполнить какие-то задачи пять раз, то значение этого свойства может выглядеть как @Counter < 5;
3. AssignExpression — выражение, которое будет изменять значение нашего счетчика. В нашем примере оно может выглядеть, например, как @Counter = @Counter + 1.
После настройки свойств этого контейнера нам останется просто перетащить в него нужную задач (или набор задач) из ToolBox и настроить их.
|