Приклад використання завдання 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).

Приклад використання завдання wmi event watcher task

Мал. 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 (). наприклад:

MsgBox ( "Спрацювало подія WMI!")

8. Запустити пакет на виконання. Як тільки ми запустимо і потім закриємо WinRAR, відразу ж спрацює подієва процедура зі Script Task (див. Рис. 9.11).

Приклад використання завдання wmi event watcher task

Мал. 9.11. Наш пакет зреагував на завершення розархівування

Контейнери - це спеціальні завдання Control Flow, які призначені для розміщення в них інших завдань Control Flow. В основному контейнери використовуються для організації циклів в пакетах. У SSIS передбачено чотири типи контейнерів:

Всі контейнери доступні в 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 і налаштувати їх.

Схожі статті