SQL Server Integration Services Nie tylko dla developera - Pakiet 

Udostępnij na: Facebook

Autor: Bartłomiej Graczyk

Opublikowano: 2013-09-09

Wprowadzenie

W pierwszym artykule tej serii opisano ogólną architekturę SQL Server Integration Services. Jednym z elementów rozwiązania, jest pakiet. Informacje zawarte w tym artykule pozwalają na poznanie struktury typowego pakietu SSIS, jak również sposobu tworzenia pakietu korzystając z dostępnych w tym celu narzędzi.

Architektura pakietów SSIS

Pakiety, które są tworzone i uruchamiane w ramach Silnika obsługi pakietów i komponentów (Runtime engine), to nic innego jak zbiór połączeń (connection managers), zadań (tasks), kontenerów (containers), zmiennych(variables), konfiguracji (package configuration) lub parametrów (w zależności od wersji SQL Server Integration Services), elementów obsługi zdarzeń (event handlers).

W pakiecie wskazać można trzy jego główne składowe kontrolujące czy też określające sposób działania pakietu (są to tzw. Element Control Flow):

  • Kontenery, które określają strukturę pakietu, pozwalają na grupowanie zadań oraz określanie wielokrotności ich wykonania (pętle). Dostępne są trzy, a tak de facto cztery rodzaje kontenerów:
Foreach Loop Container Pozwala na wielokrotne uruchomione zadań osadzonych w kontenerze na podstawie skonfigurowanego enumeratora, np. lista obiektów z bazy danych, lista plików w danym katalogu.
For Loop Container Pozwala na wielokrotne uruchomienie zadań umieszczonych w kontenerze. Wielokrotność uruchomienia uzależniona jest od określone warunku, np. wartość zmiennej
Sequence Container Kontener przeznaczony do grupowania zadań i/lub kontenerów w ramach pakietu
Task Host Container Kontener, który w zasadzie nie występuje w obszarze tworzenia pakietu, jako dostępny do wykorzystania element. Kontener przeznaczony jest dla każdego dodawanego w pakiecie zadania, pozwala na jego kontrolę i konfigurację.

Architektura pakietów SSIS pozwala na zagnieżdżanie zarówno kontenerów jak i samych pakietów. W przypadku zagnieżdżania pakietów odbywa się to poprzez wykorzystanie przeznaczonego w tym celu zadania – Execute Package Task.

  • Zadania, które stanowią funkcjonalność pakietu.

Zadania umieszczane w pakiecie mogą pochodzić z listy predefiniowanych, dostępnych domyślnie zadań ( opis standardowo dostępnych zadań dostępny jest w ramach kolejnego artykułu tego cyklu), jak również zadań własnych(tzw. Custom tasks), które mogę zostać w dowolnym momencie dopisane (zadania dostępne w SSIS bazują na .NET Framework) oraz dołączone do tworzonego pakietu SSIS. Każde z zadań posiada określone parametry, które powinny zostać skonfigurowane podczas tworzenia rozwiązania/pakietu SSIS.

Wśród predefiniowanych zadań dostępne jest również zadanie dedykowane do przetwarzania danych – Data Flow Task. Zadanie to bazuje na z góry określonej konstrukcji:

o   Źródło (Source)

o   Transformacja (Transormation)

o   Miejsce docelowe (Destination)

, i co najważniejsze wykorzystuje dedykowaną dla każdego zadania typu Data Flow instancję silnika transferu danych (Data Flow engine)

Elementy zadań dedykowanych do transferu danych korzystają z tzw. Managerów połączeń (Connection Managers). Manager połączenia określa parametry połączenia realizowanego w ramach każdego z zadań i jest tworzony z wykorzystanie dostępnych typów / sterowników np. Analysis Services Connection Manager, SMTP Connection Manager, FTP Connection Manager. Możliwa jest instalacja dodatkowych sterowników np. Dynamics CRM Connection Manager i innych.

  • Powiązania i zależności, które łączą zadania i kontenery określając kolejność i warunki ich wykonania

Powiązania stanowią element kontrolny w pakiecie określając warunki przejścia pomiędzy zadaniami/kontenerami. Warunki mogą być określone poprzez wskazanie stanu zakończenia poprzedzającego zadania (Sukces, Zakończenie, Niepowodzenie) i/lub weryfikacji określonego warunku logicznego np. sprawdzenie wartości zmiennej (np. @zmienna==100)

Ilustracja 1 - Typy warunków powiązania zadań w pakiecie

Podstawowy pakiet SSIS i jego działanie oparte jest o w/w elementy, dodatkowo możliwe jest wykorzystanie w ramach pakietu elementów takich jak:

  • Zmienne

Zmienne definiowane w pakietach mają standardowo cztery atrybuty:

o   nazwę, którą można posługiwać się w momencie potrzeby odwołania do zmiennej

o   typ, określający typ danych, jaki może zostać przypisany do zmiennej

o   zakres (scope), w przypadku pakietów SSIS możliwa jest deklaracja zmiennych  w zakresie pakietu (możliwość wykorzystania zmiennej w obrębie każdego elementu pakietu), a także zmienne dostępne lokalnie dla poszczególnych zadań / kontenerów

o   wartość, która jest przypisywana zmiennej dynamicznie w trakcie działania pakietu.

Ilustracja 2 - Opis zmiennch w projekcie SSIS

Zmienne wykorzystywane są pakietach w wyrażeniach (Expressions) i pozwalają na dynamiczne przypisanie wartości dla atrybutów zadań pakietu

  • Obsługa zdarzeń

W ramach pakietów SSIS istnieje możliwość implementacji obsługi standardowych zdarzeń, które występują lub mogą wystąpić w trakcie działania pakietu. Najbardziej popularnym i powszechnie obsługiwanym zdarzeniem jest błąd (On Error), jednakże możliwa jest również obsługa zdarzeń wskazanych na poniższej ilustracji.

Ilustracja 3 - Rodzaje zdarzeń wyzwalających ich obsługę (Event Handler)

Dla każdego ze zdarzeń wskazanych na ilustracji, zarówno w odniesieniu do całego pakietu jak i poszczególnych zadań/kontenerów możliwe jest zdefiniowanie czynności, które powinny zostać wykonane, jeśli dojdzie do określonego zdarzenia. Definiowanie obsługi zdarzeń w dużej mierze zbliżone jest do budowy samego pakietu i polega na umieszczenie odpowiednich zadań w celu wykonania określonych czynności, np. w przypadku wystąpienia błędu z odczytem pliku ( błędna struktura pliku), w ramach obsługi zdarzenia błędu (On Error) możliwe jest przeniesienie pliku do innej lokalizacji na dysku, tak, aby nie blokował wczytywania kolejnych plików z określonego katalogu.

  • Obsługa logowania zdarzeń

Dla zapewnienia możliwości pełnej analizy zdarzeń podczas wykonania pakietu dostępne są opcje logowania zdarzeń. Logowanie zdarzeń odbywa się na podstawie zdefiniowanych i określonych kryteriów. Zapis informacji o zdarzeniach może być konfigurowany niezależnie dla pakietu i występujących w pakiecie zadań/kontenerów. Zapis informacji odbywa się do lokalizacji określonego typu (Provider type), widoczne na poniżej ilustracji.

Ilustracja 4 - Typy lokalizacji zapisu danych logowania pakietów

 Informacje zapisane we wskazanej lokalizacji mogą służyć do analizy wykonania poszczególnych pakietów zarówno pod kątem ich wydajności jak i potencjalnych błędów. Podobnie jak w przypadku obsługi zdarzeń, logowanie może być aktywowane dla określonych typów zdarzeń widocznych na poniższej ilustracji.

Ilustracja 5 - Informacje dot. możliwych do rejestrowania zdarzeń

 

Podstawową jednak różnicą pomiędzy obsługą zdarzeń, a logowaniem zdarzeń jest brak możliwość zdefiniowania jakiekolwiek akcji (jak ma to miejsce w przypadku obsługi zdarzeń), możliwe jest natomiast zapisanie szczegółowych informacji o zdarzeniu we wcześniej zdefiniowanej lokalizacji.

  • Parametry / Konfiguracja pakietu

Jednym z bardziej istotnych elementów pakietów SSIS, są również parametry, dostępne w wersji SQL Server Integration Services 2012, które z powodzeniem zastąpiły wykorzystywane wcześniej konfiguracje (Package Configuration). Jako, że kwestia parametrów w znaczący sposób dotyczy obszaru wdrażania pakietów temat ten szczegółowo został opisany w artykule poświęconym wdrażaniu pakietów SSIS.

Narzędzia budowy pakietów SSIS

Dla umożliwienia stosunkowo prostego tworzenia czy rozwoju pakietów SSIS udostępnione zostały graficzne narzędzia wspomagające ich konstruowanie. Wynik takiej konstrukcji zapisywane jest w postaci pliku XML, który stanowi pełną definicję pakietu SSIS.

Budowa najprostszych pakietów SSIS możliwa jest z wykorzystaniem kreatora pakietów (SSIS Wizard), jednakże możliwości kreatora są dość ograniczone, dlatego jego użycie sprowadza się do dwóch podstawowych zastosowań:

  • Tworzenie pakietów przeznaczonych do transferu danych pomiędzy lokalizacjami (baza-baza, plik-baza, baza-plik, itp), jednakże bez stosowania złożonych transformacji.


    Ilustracja* 6 - Okno kreatora pakietu SSIS*

  • Tworzenie planów konserwacji baz danych (Maintenance plan)

Dodatkowo możliwe jest również budowanie pakietów SSIS korzystając z graficznego narzędzia – SSIS Designer.  W aktualnej wersji SSIS Designer udostępniony jest pod postacią projektów Integration Services w Data Tools (poprzednio Business Intelligence Develepoment Studio). Korzystając z tej metody rozwoju pakietów SSIS można wykorzystać domyślnie dostępne zadania, jak również własne (custom tasks). Zadania i możliwości ich praktycznego zastosowania opisane został w kolejnym artykule tego cyklu.

Podsumowanie

Rozwijając pakiety SSIS można korzystać z wielu domyślnie dostępnych elementów (zadania, kontenery, powiązania), a także wbudowanych funkcjonalności, które wymagają jedynie odpowiedniej konfiguracji (logowanie, obsługa zdarzeń, zmienne). Warto jednak pamiętać, iż w przypadku potrzeby wykorzystania niestandardowego komponentu, niedostępnego domyślnie w pakietach SSIS, wystarczy go stworzyć korzystając z dostępnych wytycznych dla tworzenia niestandardowych komponentów SSIS