logo
SQL2008_Administration

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

  1. Выбираем нужный источник запроса при помощи свойства WmiQuerySourceType (в нашем примере - Direct Input), а затем вводим текст запроса как значение для свойства WqlQuerySource, например:

select * from __instancedeletionevent within 1

where TargetInstance isa 'Win32_Process' AND TargetInstance.Name = 'WinRAR.exe'

Этот запрос с интервалом в 1 секунду будет опрашивать объект Win32_Process на предмет завершения работы процесса с именем WinRAR.exe.

  1. Для свойства ActionAtEvent настраиваем значение Log the event and fire the SSIS Event — чтобы при возникновении события WMI информация о нем не только записывалась в протокол выполнения пакета, но и срабатывало событие пакета. Для остальных свойств задачи WMI Event Watcher Task можно оставить значения по умолчанию.

  2. Перейти в WMI Designer на вкладку Event Handlers и в списке Executable выбрать WMI Event Watcher Task, а в списке Event Handler — событийную процедуру WMIEventWatcherEventOccured и щелкнуть мышью по ссылке Click here to create a "WMIEventWatcherEventOccured" event handler...

  3. Настроить реакцию на событие в виде задачи Script Task. Для этого нужно перетащить из Toolbox на открывшееся розовое поле на вкладке Event Handlers задачу Script Task и настроить ее свойства. На вкладке Script свойств этой задачи нужно нажать на кнопку Design Script и ввести требуемый код для процедуры Main(). Например:

Public Sub Main()

MsgBox("Сработало событие WMI!")

Dts.TaskResult = Dts.Results.Success

End Sub

  1. Запустить пакет на выполнение. Как только мы запустим и потом закроем WinRAR, сразу же сработает событийная процедура со Script Task (см. рис. 9.11).

Рис. 9.11. Наш пакет среагировал на завершение разархивирования