Припустимо, що нам потрібно відстежити, коли на нашому комп'ютері завершить роботу процес з ім'ям 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 (). наприклад:
MsgBox ( "Спрацювало подія WMI!")
8. Запустити пакет на виконання. Як тільки ми запустимо і потім закриємо WinRAR, відразу ж спрацює подієва процедура зі Script Task (див. Рис. 9.11).
Мал. 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 і налаштувати їх.