SQL Server 2016 Integration Services Package Parts

Do tej pory omówiliśmy już całkiem sporo nowości w ramach naszej serii Poznaj SQL Server 2016. Póki co nie wspomnieliśmy ani słowem o Integration Services – czy to oznacza, że nie pojawiło się tam nic nowego? Wręcz przeciwnie! W najnowszej wersji dostajemy do rąk kilka nowości, jedną z nich są tzw. Package Parts o których traktuje niniejszy artykuł – zapraszam do lektury.

Jednym z większych problemów związanych z Integration Services było to, iż oprogramowanie to nie dawało sensownych możliwości ponownego użycia kodu – za każdy razem musieliśmy albo taką logikę implementować niejako “na opak”  różnymi obejściami albo używać tradycyjnej metody kopiuj-wklej. (Pomijając BIML o którym powiemy sobie innym razem) sytuacja zmieniła się nieco w wersji SQL Server 2016 gdzie pojawiły się Package Parts czyli elementy, które mogą być swobodnie używane w ramach różnych pakietów i są niczym innym jak ponownie użytym kodem. Aby lepiej zobrazować jak działa wspomniany mechanizm stwórzmy sobie prosty projekt Integration Services o nazwie PackageParts_demo i przyjrzyjmy się temu co widzimy w oknie eksploratora solucji (ang. Solution Explorer):

Pojawił się nowy węzeł o nazwie Package Parts wraz z zawartym w nim podfolderze o nazwie Control Flow (nazwa ta nie jest przypadkowa ponieważ jedynymi Package Parts jakie możemy użyć w SQL Server 2016 są właśnie elementy przepływu kontroli). Kliknijmy prawym przyciskiem myszy na podfolder Control Flow i z menu kontekstowego wybierzmy New Control Flow Package Part. Po tym działaniu naszym oczom ukaże się standardowe okno Designer’a, a w samym eksploratorze zobaczymy plik o rozszerzeniu .dtsxp – zmieńmy jego nazwę na ShowMessage.dtsxp tak jak zostało to przedstawione na poniższym zrzucie ekranowym:

Kolejnym krokiem będzie stworzenie zmiennej o nazwie vMessage – zrobimy to klikając prawym przyciskiem myszy na designer i z menu kontekstowego wybierając Variables. Upewnijmy się, że zmienna jest typu String i zamknijmy okno.

 

W dalszej części naszej demonstracji musimy przerzucić na pole designera standardowego Script Taska, którego nazwijmy st_ShowMessage. Po wejściu w konfigurację tego zadania klikając na niego dwukrotnie w ReadOnlyVariables musimy wskazać zmienną którą dodaliśmy krok wcześniej tj. vMessage:

 

Kliknijmy Edit Script – naszym oczom ukaże się edytor kodu c# – odnajdźmy tam linię // TODO: Add your code here i pod nią wpiszmy następujący kod:

Następnie zapiszmy całość zamknijmy okno edytora i przejdźmy do naszego pakietu tj. Package.dtsx. Stworzony przez nas Package Part może być użyty w pakietach – znajdziemy go w oknie SSIS Toolbox w dolnej części okna:

W standardowy sposób przeciągnijmy ten element na designera –  element będący Package Part posiada charakterystyczną literę P w górnej części jego graficznej reprezentacji dzięki czemu możemy go odróżnić od standardowego zadania. Po wejściu w jego konfigurację możemy przypisać wartość zmiennej, którą wcześniej stworzyliśmy- odnajdźmy zmienną vMessage  i przypiszmy do jej właściwości Value wartość “To jest pierwsze wywołanie Package Part” tak jak zostało to przedstawione poniżej:

Następnie dodajmy ponownie ten sam Package Part nazwijmy go ShowMessage_02 – tym razem do wartości zmiennej przypiszmy tekst “To jest drugie wywołanie Package Part”. Oba zadania połączmy zieloną strzałką czyli Success Precedence Constraint tak jak zostało to przedstawione poniżej:

Teraz możemy uruchomić nasz pakiet – naszym oczom powinien ukazać się pierwszy, a następnie drugi komunikat:

W tym momencie jeżeli zachodzi konieczność modyfikacji – to możemy to zrobić jednokrotnie w ramach Package Parts zamiast robić te samą powtarzalną czynność kilkukrotnie. Niestety póki co cała funkcjonalność jest dosyć mocno ograniczona np. nie mogą one zawierać Event Handler, Parameters czy innych package parts ( nie możemy ich zagnieżdżać). Ponadto Package Part musi mieć składać się maksymalnie z jednego zadania – gdy chcemy dodać więcej niż jedno zadanie musimy go zawrzeć w kontenerze typu Sequence aby to mogło zadziałać. Przeglądając Microsoft Connect (portal do zgłaszania bugów i nowych funkcjonalności) znajdziemy całą masę wpisów dotyczących Package Parts – co z tego wyjdzie? Zobaczymy – póki co widać światło w tunelu.

Adrian Chodkowski
Follow me

Adrian Chodkowski

SQL geek, Data enthusiast, Consultant & Developer
Adrian Chodkowski
Follow me

Latest posts by Adrian Chodkowski (see all)

Leave a Comment

Your email address will not be published. Required fields are marked *