Главная Обратная связь

Дисциплины:






Пример использования задачи 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 и настроить их.





sdamzavas.net - 2020 год. Все права принадлежат их авторам! В случае нарушение авторского права, обращайтесь по форме обратной связи...