Середа проектування

Найкраще почати знайомство зі службою інтеграції з освоєння її середовища проектування Запустимо утиліту Business Intelligence Development Studio (далі BIDS) і створимо новий проект Шаблон Integration Services знаходиться в папці Business Intelligence Вікно програми показано на рис 421

Puc 421 Вкладка Control Flow середовища проектування служби інтеграції

Крім загальновідомих панелей Solution Explorer і Properties, при проектуванні пакетів використовуються й інші (повний їх список ви можете побачити в меню View)

■ Connection Managers (Диспетчери підключень) На цій панелі знаходяться покажчики на файли, бази даних та інші обєкти, існуючі в контексті виконання завдань, поміщених в область проектування Наприклад, завдання Execute SQL Task вимагає наявності підключення до бази даних

■ Toolbox (Панель елементів) Ця панель містить список завдань, які можна перетягнути в область проектування Список доступних завдань залежить від конкретної вкладки

■ Control Flow (Потік управління) Це основна область проектування, на яку поміщаються завдання і де виконується їх конфігурація і впорядкування

■ Data Flow (Потік даних) Одним із завдань, які можна конфігурувати на панелі Control Flow, є Data Flow Вона використовується для переміщення і перетворення даних Панель Data Flow використовується для конфігурування однойменного завдання

■ Event Handlers (Оброблювачі подій) Події відбуваються як з пакетом в цілому, так і з окремими його завданнями На цю панель поміщають завдання, які слід виконати при виникненні певних подій, таких як OnError і OnPreEcecute

■ Package Explorer (Обозреватель пакета) На цій панелі перераховані всі елементи пакету в структурі дерева На ній можна знайти ті сконфігуровані елементи, які не очевидні в інших виставах

Виконання пакета відбувається послідовно, при цьому першим завданням вважається та, яка не має попередників Далі виконання триває з урахуванням встановлених пріоритетів завдань Тим, хто в попередніх версіях SQL Server працював з пакетами служби DTS, такий порядок знаком Так для чого ж призначена вкладка Data Flow

Будь-якому безлічі даних у вкладці Control Flow відповідає одна задача Для перегляду конфігурації завдання слід двічі клацнути на її ярлику (рис 422) Зверніть увагу на те, що тут не міститься інших завдань, окрім джерел і приймачів даних, а також перетворень Стрілки між окремими блоками представляють не порядок виконання завдань, а входи і виходи даних, що визначають їх шлях від джерела до приймача На відміну від пакетів DTS, де перетворення виконувалися як один крок при витяганні або запису даних, потік даних може формуватися з безлічі джерел, розділятися і зливатися з іншими потоками, а потім записуватися в пункти призначення Так як перетворення даних виконуються без операцій читання і запису на кожному кроці, добре спроектований потік даних може бути напрочуд швидким

Вкладка Connection Managers

Вкладка Connection Manager служить своєрідною оболонкою рядка підключення Коли підключення визначено, на нього можуть посилатися інші елементи, що не дублюючи одне одного Таким чином, спрощується конфігурування і управління інформацією

Нові диспетчери підключень можна створити, клацнувши правою кнопкою миші на панелі Connection Managers і вибравши в контекстному меню пункт New при конфігуруванні завдання, що вимагає підключення У списку цього контекстного меню перераховані найбільш популярні типи підключень всі інші доступні після клацання на пункті New Connection

Кожен тип підключення має власні діалогові вікна редактора і параметрів, склад яких залежить від конкретного типу Кожен з цих двох списків може містити елементи, недоступні в іншому списку Наприклад, редактор OLE DB є единствен

Puc 422 Вкладка Data Flow середовища проектування служби інтеграції

вим місцем, де встановлюється час очікування підключення, в той час як параметр перевірки затримки встановлюється на панелі Properties

Змінні

Як і будь-яка інша середовище програмування, служба інтеграції підтримує змінні для управління виконанням процедур, операцій з даними та інших цілей Клацніть правою кнопкою миші на робочій області і виберіть у контекстному меню пункт Variables За замовчуванням відкрилася панель містить тільки ті змінні, в область видимості яких входить виділений обєкт, а також його предки Наприклад, якщо клацнути на порожньому місці робочої області конструктора, обєктом вважатиметься весь проект і на панелі Variables відобразяться тільки змінні рівня пакета, а при виділенні обєкта потоку управління будуть показані змінні рівня виділеної завдання, а також всього пакету (який є батьківським обєктом по відношенню до виділеного) Якщо ж клацнути на кнопці Show User Variables панелі інструментів, то відобразиться повний список змінних

Область визначення змінної задає область її видимості Змінні рівня пакета видимі всюди в його межах, у той час як змінні рівня задачі або обробника помилок видимі тільки в межах одного обєкта Змінні рівня контейнера видимі у всіх обєктах, які містяться в ньому

Для створення змінної потрібно спочатку виділити обєкт для позначення області видимості, а потім клацніть на кнопці Add Variable панелі інструментів Слід звернути увагу, що область видимості змінної неможливо змінити після її створення – для цього її потрібно видалити і створити заново

На додаток до області визначення будь-яка змінна має простір імен-за замовчуванням User або System Простір імен для користувача змінних можна змінити, в той час як системні змінні тільки в рідкісних випадках піддаються зміні Простір назв вказується для повної кваліфікації посилань на змінну Наприклад, посилання на призначену для користувача змінну MyVar буде мати наступний вигляд: User: : MyVar

Використання змінних

Значення змінним можна присвоювати вручну на панелі Variables, але існують і інші можливості

■ У процесі виконання значення змінним можна привласнити за допомогою перемикача / SET утиліти dtexec

■ Змінним можна присвоювати значення у виразах Такі вирази можуть містити операції порівняння, інші змінні і обчислені значення, засновані на поточній даті

■ Контейнери For і Foreach можуть привласнювати змінним послідовні числові значення, імена файлів у папці, назви вузлів документа XML, а також елементи інших списків і колекцій

■ Результати запитів, як у вигляді скалярних значень, так і у вигляді наборів даних, також можуть присвоюватися змінним

■ Значення змінним можуть привласнювати сценарії, але тільки в кінці виконання (в ході виконання значення фіксовані)

Змінні найчастіше використовують у виразах параметрів На підставі цих виразів у процесі виконання програми визначаються значення параметрів Це дозволяє змінним управляти всім, чим завгодно, – Від тексту запитів, до включення і відключення завдань

Вирази

Вирази в службі інтеграції використовуються для обчислення значень в циклах, розбиття потоків даних, присвоєння значень змінним і призначення параметрів завдань Мова, що використовується для визначення виразів, має повністю новий синтаксис-щось на зразок комбінації Т-SQL і С # На щастя, вам на допомогу прийде інструмент Expression Builder, який можна запустити в безлічі місць Слід зазначити ряд ключових моментів

■ Змінні починаються з символу комерційного пов (@) і можуть містити простір імен Таким чином, посилання @ [User :: f оо] вказує на призначену для користувача змінну foo Посилання на стовпці ідентифікуються джерелом даних Наприклад, посилання [RowFileSource] [CustomerName] вказує на стовпець CustomerName, який можна прочитати у файлі RowFileSource Квадратні дужки є необовязковими для імен, що не містять прогалини та інші спеціальні символи

■ Оператори подібні з мовою С, наприклад, символи == вказують на операцію порівняння, символи ScSc замінюють логічне AND, а знак оклику замінює операцію на протилежну (наприклад, <Або! =). Символ знаку питання замінює функцію iif. Наприклад, результатом вираження @ [User :: foo] == 17 && CustonerID <100 буде значення true, якщо змінна foo має значення 17, а стовпець CustomerlD - значення менше 10 0.

■ Строкові константи полягають в подвійні лапки, а спеціальні символи передує зворотна коса риска (наприклад, \ П або \ t)

■ Оператор cast являє собою укладену в дужки цільову змінну, після чого слід преобразуемое значення Наприклад, вираз (DT_I4) 193 перетворить рядок в ціле 4-байговое число, а вираз (DT_STR, 10, 152) @ [User :: foo] перетворить значення змінної foo в 10-символьну рядок, що використовує кодову сторінку 1252 Для кодової сторінки немає значень за замовчуванням, так що вам доведеться самому завчити номер кодової сторінки своєї мови

Не варто плутати кодову сторінку з регіональними настройками Кодова сторінка відображає символи у відповідні їм коди Якщо вам цікаво ознайомитися з кодовими сторінками, скористайтеся наступними ресурсами:

wwwil8nguycom/unicode/codepageshtml wwwmicrrosoftcom/typography/unicode/cscp/htm

■ Функції успадковані зі світу T-SQL, включаючи добре знайомі функції роботи з датами (GETDATE, DATEADD, YEAR), рядками (SUBSTRING, REPLACE, LEN), а також математичні функції (CEILING, SIGN)

Елементи конфігурування

У службі інтеграції спільно працює безліч елементів, використовуючи завдання потоку виконання та компоненти потоку даних У цьому розділі будуть описані загальні концепції і настройки, а також унікальні властивості, характерні для конкретних елементів

Потік управління

Конфігурування потоку управління у вкладках Control Flow і Event Handler здійснюється шляхом перетягування елементів (задач і контейнерів) в робочу область конструктора, конфігурування кожного з елементів і подальшого звязування їх в ланцюжок виконання Окремі елементи конфігуруються за допомогою частково пересічних вікон Properties і Editor Клацніть правою кнопкою миші на елементі і виберіть в контекстному меню пункт Edit Відкриється діалогове вікно редактора, що складається з декількох сторінок (наповнення цих сторінок залежить від типу виділеної задачі)

Всі редактори містять сторінку Expressions, на якій можна конфігурувати властивості за допомогою виразів, а не статичних значень Існуючі виразу можна переглянути і модифікувати безпосередньо на сторінці також можна клацнути на кнопці з еліпсом і тим самим активізувати інструмент Expression Builder Додаткові виразу можна редагувати безпосередньо на сторінці або відкрити клацанням на еліпсі діалогове вікно Expression Editor, показане на рис 423 Виберіть встановлюваний параметр в лівому стовпчику, а в правому введіть вираз Якщо є необхідність, скористайтеся редактором виразів, який відкривається клацанням на еліпсі

Незважаючи на безліч індивідуальних властивостей обєктів, більша їх частина повторюється в різних елементах, у тому числі в пакетах, контейнерах та окремих завданнях Серед загальних властивостей можна згадати наступні

■ Delay Validation Зазвичай всі завдання в пакеті перевіряються перед виконанням, щоб уникнути неповної роботи І правда, навіщо витрачати півгодини на пошук випадкової помилки у назві змінної Водночас цю операцію можна відкласти до моменту виконання, встановивши для цього параметра значення true Цей параметр важливий в задачах, які посилаються на обєкти, які під час запуску завдання ще не існує і створюються в процесі виконання

Disable Коли для цього параметра встановлено значення true, завдання не виконується Цей перемикач також доступний в контекстному меню обєкта завдання Відключені задачі відображаються більш темним кольором

DisableEventHandler Установка цього параметра відключає обробку помилок Звичайно його встановлюють, коли обробка помилок, виконувана батьківським контейнером, не підходить для конкретного обєкта

Властивості обробки помилок краще розглядати в групі

• FailPackageOnFailure Якщо для цього параметра встановлено значення true і виникає помилка в одному із завдань пакета, виконання всього пакету переривається

• FailParentOnFailure Якщо для цього параметра встановлено значення true, виконання батьківського контейнера переривається, якщо виникає помилка в одній з його завдань Якщо завдання не включена в контейнер в явному вигляді (тобто за допомогою виразів For Loop, Foreach Loop або Sequence), то вона неявно обволікається невидимим контейнером TaskHost, виступаючим в ролі батька За умовчанням цей параметр має значення false

• MaximumErrorCount Максимальна кількість помилок завдань або контейнерів, після досягнення якого виконання пакету припиняється За замовчуванням для цього параметра встановлено значення 1

Зважаючи значення параметрів за замовчуванням рівня пакета, контейнера або завдання, будь-яка задача, що завершується помилкою, призводить до припинення виконання пакета Причиною тому є параметр MaximumErrorCount Це справедливо незалежно від невірних гілок виконання, визначених порядком виконання Збільшення значення цього параметра для задачі дозволить включити розгалуження

Враховуючи такий режим роботи, питається, де більш доречні параметри FailOn Як приклад розглянемо контейнер з двома завданнями, одне з яких дає збій в певних ситуаціях (назвемо його Try), а друге виконує відновлення після помилки (назвемо його Recover) У той же час сам контейнер повинен виконуватися без помилок По-перше, значення параметра MaximumErrorCount пакета слід збільшити, щоб була можливість запустити завдання відновлення після події збою Але таке рішення призведе до ігнорування помилок і другого завдання Щоб виправити ситуацію, встановіть параметр FailOnFailure в завданні Recover Таким чином, виконання пакету буде перервано при виникненні помилки в завданні Recover

LoggingMode За замовчуванням для цього параметра встановлено значення UseParent Setting Таким чином, протоколювання для всього пакету можна визначити однією дією, а для окремих його елементів включати і відключати в індивідуальному порядку

Для визначення послідовності операцій, таких як внесення змін у безліч таблиць, можна використовувати транзакції При цьому всі завдання або будуть, або не будуть виконані разом Наступні параметри регулюють транзакції в пакеті

• IsolationLevel Установка рівня ізоляції транзакцій в одне з наступних значень: Unspecified, Chaos, ReadUncomited, ReadCommited, RepeatableRead, Serializable або Snapshot За замовчуванням прийнято значення Serializable

• TransactionOption Цей параметр може приймати одне з наступних значень: NotSupported (якщо елемент не бере в транзакції), Supported (якщо

батьківський контейнер вимагає транзакцію, в якій даний елемент бере участь) або Required (якщо батьківський контейнер не запуститься транзакцію, даний контейнер запустить її)

Якщо транзакція розпочата батьківським контейнером, то в ній можуть брати участь всі дочірні елементи, в яких параметр TransactionOption має значення Suported або Required

Організація потоку управління

Як вже говорилося раніше, порядок виконання завдань визначається обмеженнями першості Виберіть будь-яке завдання або контейнер і перетягніть значок стрілки, прикріпивши його до елементу тупим кінцем Виконуйте це дію до тих пір, поки всі елементи не будуть повязані, як потрібно Всі незвязані завдання будуть запускатися в непередбачуваному порядку, часто навіть паралельно один одному Для кожного елемента за замовчуванням визначений параметр On Success Якщо двічі клацнути на ньому, відкриється діалогове вікно редактора Precedence Constraint Editor (рис 424)

Puc 424 Редактор Precedence Constraint Editor

У верхній частині вікна в розділі Constraint options визначається, коли обмеження повинно активізуватися (все залежить від концепцій операції)

■ Обмеження На підставі результату виконання попередньої операції – успішному, помилковому або закінченому (виконання є завершеним, незалежно від того, чи відбулася помилка)

У Вираз На підставі обчислення введеного вирази, що приймає значення true або false

Ці концепції комбінуються чотирма способами: одне обмеження, один вираз, вираз з обмеженням, а також вираз чи обмеження Все це дозволяє створювати досить гнучкі конструкції У Як приклад розглянемо завдання, підраховувати в попередньо завантаженої таблиці кількість оброблених рядків Виконання завдання може піти двома шляхами: успішним, коли число оброблених рядків відповідає кількості завантажених, і помилковим, коли або завдання завершилося помилкою, або кількість оброблених рядків менше необхідного

У нижній частині редактора в області Multiple constraints визначається, як слід чинити з безліччю вхідних стрілок Якщо вибирається значення AND (воно прийнято за замовчуванням), то перед виконанням завдання повинні виконатися всі обмеження Якщо вибирається OR, то задоволення будь-якого входить обмеження тягне за собою виконання завдання Найчастіше використовується логічне І (тобто AND) Логічне АБО (тобто OR) зазвичай використовується тоді, коли робітники потоки розбиваються і зливаються Наприклад, потік управління може розділятися в залежності від успіху виконання деякого завдання, а потім після обробки помилки хід виконання входить у звичайне русло Якби використовувалося логічне І, то в точці злиття гілок потрібно б одночасно і успішне, і помилкове виконання, що неможливо з визначенням

Стрілки, що представляють порядок виконання завдань, візуально відображають тип обмеження Зелена стрілка вказує на успішне виконання, червона – на помилкове, синя-на завершення виконання Обмеження, використовують вирази, позначаються значком f (х) Обмеження логічного І представляють собою суцільну лінію, а логічного АБО – пунктирну

Потік даних

На відміну від інших завдань, які можна конфігурувати в потоці управління, завдання потоку даних у відповідь на запит редагування не відчиняє діалогове вікно Замість цього користувач перемикається на спеціальну вкладку Data Flow, де може переглянути і сконфігурувати параметри потоку даних Кожен з компонентів, що відображаються в робочій області конструктора, можна конфігурувати на панелі Properties Це специфічний для окремих компонентів редактор, має до того ж безліч компонентів розширеного редактора

Кожен потік даних повинен починатися як мінімум з одного джерела і закінчуватися також хоча б одним джерелом Між цими джерелами знаходяться компоненти перетворення даних завдання Перетворення даних може включати в себе всілякі операції, в тому числі сортування, конвертацію, консолідацію і тп

Крім компонентів джерел даних і перетворень, існують також і зелені стрілки потоку даних, що зєднують окремі елементи Перед тим як помістити на робочу область конструктора-якої елемент, потрібно створити стрілку, яка постачає йому дані, – саме від неї залежить склад метаданих, необхідних для конфігурування Аналогічний процес повязаний і з червоними стрілками, які направляють дані після помилкової відпрацювання компонента

Редактор потоків даних використовують для формування та конфігурування шляхів руху інформації Подвійне клацання на шляху призводить до відкриття спеціалізованого редактора, що містить три вкладки

■ General У цій вкладці знаходяться імя, опис і анотація Незважаючи на те що анотація, пропонована за замовчуванням, цілком адекватна, більш складні і взаємоповязані потоки можуть зажадати додаткових відомостей

■ Metadata У цій вкладці відображаються метадані кожного шпальти інформаційного потоку, в тому числі тип даних і компонент джерела Ця інформація доступна тільки для читання, так що якщо потрібно внести зміни, то слід оперувати з вихідними компонентами шляху Також можна використовувати елементи перетворення даних

■ Data Viewers До шляху можна підключити різні засоби перегляду даних з метою налагодження і тестування

Так як потік даних існує в межах одного завдання потоку управління, збій будь-якого компонента призведе до збою всього завдання

Оброблювачі помилок

Оброблювачі помилок можна визначити для будь-якого з безлічі подій будь-якого завдання або контейнера потоку управління Їх можна використовувати для додаткового протоколювання, обробки помилкових ситуацій, програмування ініціалізації, а також безлічі інших завдань Якщо при виникненні помилки в деякому компоненті відповідний обробник помилки не визначений, служба інтеграції перевіряє батьківські контейнери, аж до рівня пакета, на предмет наявності такого обробника і використовує його Якщо якомусь батьківському елементі був створений обробник помилок, то у всіх його дочірніх елементах можна або встановити для параметра DisableEventHandler значення true, або створити власний обробник

Щоб спроектувати обробник помилок, перейдіть на вкладку Event Handler і виберіть у верхньому лівому списку елемент потоку управління, а в правому верхньому списку – подія Після цього клацніть на активізованою засланні в робочій області конструктора, щоб ініціалізувати подія Логіка обробки помилки програмується точно так само, як і будь-який інший компонент потоку управління

Виконання пакета в середовищі розробки

Після того як частина пакета сформована, її можна протестувати безпосередньо в середовищі розробки Клацніть правою кнопкою миші на пакеті в Solution Explorer і виберіть у контекстному меню пункт Execute Package Пакет буде запущений в режимі налагодження У ході виконання пакета успішно виконані завдання будуть перефарбовані в робочій області з білого кольору (ще не виконані) в жовтий (виконуються) і потім в зелений або червоний (залежно від успіху виконання)

Існують і інші зручні методи виконання пакетів в утиліті BIDS – Увага головне переконатися, що на виконання запускається коректний обєкт Виберіть у меню пункт Start Debugging, або натисніть клавішу , Або клацніть на відповідній кнопці панелі інструментів-головне переконайтеся, що виконується пакет був призначений автоматично запускаються Для цього клацніть на ньому правою кнопкою миші в Solution Explorer До того ж рішення, що містять безліч проектів, можуть привести до непередбачуваних результатів (наприклад, до розгортання бази даних служби аналізу), незалежно від того, який з обєктів був обраний для налагодження як вихідний Повірте, що навіть на етапі розробки ненавмисний запуск шестигодинний завдання, такий як розгортання даних або побудова куба, надовго зіпсує вам настрій

Після того як налагодження почалася, у вкладці Execution Results будуть відображатися повідомлення про хід процесу, включаючи час виконання кожного з компонентів Після завершення роботи пакета він залишається в режимі налагодження при цьому все ще можна переглянути інформацію про його змінних і стані Щоб повернутися в режим конструктора, клацніть на кнопці Stop панелі інструментів Debug, або виберіть у меню пункт Debugs Stop Debugging, або натисніть комбінацію клавіш

У будь-якому завданні, контейнері або пакеті можна встановлювати контрольні точки Для цього потрібно натиснути правою кнопкою миші на обєкті і вибрати в контекстному меню пункт Edit Breakpoints Відкриється діалогове вікно (рис 425), що дозволяє встановити контрольну точку на будь-якій події, повязаному з цим обєктом Найчастіше обирають події PreExecute (перед виконанням) або PostExecute (після виконання) Якщо ви хочете встановити контрольну точку перед виконанням деякого компонента, виділіть даний обєкт і натисніть клавішу Будь-яка контрольна точка може бути проігнорована в декількох ситуаціях:

■ до n-го за рахунком виконання компонента

■ починаючи з n-го за рахунком виконання компонента

■ у всіх випадках, крім перерахованих виконань компонента

Puc 425 Діалогове вікно установки контрольних точок

Коли виконання зупиняється у контрольній точці, у вікні Locals ви можете побачити поточні значення змінних, у вікні Output – корисні повідомлення і попередження, а у вікні Execution Results – деталі ходу виконання всіх завдань

Аналогом контрольних точок є вікно Data Viewer Двічі клацніть на вас цікавить шляху Далі в ході виконання пакету вікно Data Vie we г заповнюватиметься даними при цьому виконання пакету буде припинятися Для його продовження потрібно клацнути в цьому вікні на кнопці Go (продовжити виконання) або Detach (відключити перегляд даних у цій точці)

Контрольні точки можна також помістити і в будь-якій точці компонента сценарію Відкрийте сценарій і в цікавій для вас рядку встановіть таку точку У цьому випадку служба інтеграції зупинить процес саме в необхідному місці

Джерело: Нільсен, Пол Microsoft SQL Server 2005 Біблія користувача : Пер з англ – М: ООО ІД Вільямс , 2008 – 1232 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*