SQL Server Integration Services Nie tylko dla developera - Deployment 

Udostępnij na: Facebook

Autor: Bartłomiej Graczyk

Opublikowano: 2013-09-17

**Wprowadzenie                                                                                                                            **

Można powiedzieć, że zaprojektowanie i stworzenie pakietu SSIS to dwa pierwsze etapy, gdyż mając przygotowane rozwiązanie, należy niewątpliwie skupić się na możliwości jego wdrożenia w określonym środowisku, w pierwszym kroku testowym, a następnie produkcyjnym. Powstaje pytanie, w jaki sposób pakiet SSIS może zostać przeniesiony ze środowiska rozwojowego, gdzie uruchamiany jest z poziomu Data Tools czy Business Intelligence Development Studio (BIDS), na środowisko, w którym najprawdopodobniej wymagane będzie jego automatyczne wywołanie, nie wspominając o konieczności dostosowania pakietu do danego środowiska (konta, hasła, connection strings, itd.).

Metody wdrożenia pakietów SSIS są uzależnione od środowiska SQL Server Integration Services, dla którego zostały pakiety przygotowane, jednak generalnie można podzielić je na dwie główne grupy:

  • Wdrożenia pojedynczych pakietów SSIS (package deployment), dostępne dla wszystkich wersji Integration Services
  • Wdrożenia projektów / rozwiązań SSIS (project deployment), dostępne począwszy od wersji SQL Server 2012

Dodatkowo warto podkreślić, że począwszy od SQL Server 2012, w Integration Services dostępne są również parametry konfiguracyjne. W przypadku SQL Server 2012 i wdrożenia typu „package deployment” nadal możliwe jest wykorzystanie konfiguracji pakietu (Package Configuration), jednakże w domyślnym modelu, jakim w wersji 2012 jest „project deployment” konfiguracje zostały zastąpione przez parametry, które można konfigurować w zależności od potrzeb i środowisk, w których pakiet będzie uruchamiany. W przypadku, gdy w pakietach zastosowane zostaną parametry konfiguracyjne, konwersja do modelu „package deployment” nie jest możliwa – konieczne jest wcześniejsze usunięcie parametrów. Zarówno konfiguracje jak i pakiety pozwalają na dostosowanie pakietu do wymagań danego środowiska bez konieczności każdorazowego modyfikowania poszczególnych zadań pakietu i ich właściwości.

Modele przechowywania pakietów SSIS

Przygotowując się do wdrożenia, należy również, a tak faktycznie to przede wszystkim podjąć decyzje o sposobie przechowywania pakietów na serwerze docelowym. Sposób przechowywania pakietów nie wpływa bezpośrednio na możliwości jego uruchamiania, jednakże w zależności od wybranej metody konieczne będzie stosowanie innych procedur utrzymania np. kopii bezpieczeństwa pakietów. Dostępne lokalizacje dla pakietów to:

  • System plików – pakiety przechowywane są w dowolnym, wskazanym podczas wdrożenia / kopiowania katalogu na dysku.
  • SSIS Package Store – dedykowany obszar na dysku, zarządzany i monitorowany z poziomu usługi SSIS, w zależności od wersji SQL Server domyślna lokalizacja SSIS PAckage Store może być inna, np. dla wersji SQL Server 2008 domyślna lokalizacja to %Program Files%\Microsoft SQL Server\100\DTS
  • Baza danych – dla SQL Server 2012 – dedykowana baza danych – SSIS Catalog, dla wcześniejszych wersji SQL Server – domyślnie baza MSDB, tabela dbo.sysssispackages

Wybór lokalizacji wskazanych powyżej uzależniony jest od preferencji osoby odpowiedzialnej za koncepcję rozwiązania, jak już zostało to wspomniane ze względu na ograniczenie działań utrzymaniowych jak i kwestie bezpieczeństwa, najbardziej optymalną lokalizacją jest baza danych.

Wdrażanie pakietów w modelu „package deployment”

W przypadku wdrażania pojedynczych pakietów ( w przypadku SQL Server 2012 pakietów nieposiadających zdefiniowanych parametrów), można skorzystać z jednego z poniższych sposobów:

Wykorzystanie pliku manifestu do instalacji pakietu

Plik manifestu to plik XML o dość prostej konstrukcji – zawiera informacje o pakietach, które zostaną zainstalowane/wgrane do wskazanej lokalizacji. Możliwość wygenerowania pliku manifestu to wbudowana funkcjonalność, która wymaga wykonania poniżej opisanych czynności:

  1. Przejść do właściwości projektu i wybrania zakładki Deployment Utility, co zostało pokazane na poniższej ilustracji.
  2. Krok drugi to ustawienie wartości pola CreateDeploymentUtility na wartość True
  3. Po ustawieniu parametru należy zbudować projekt (Build)
  4. Plik manifestu zostanie wraz z pakietem zostanie umieszczony w lokalizacji zdefiniowanej w zakładce Deployment Utility, pole DeploymentOutputPath

Plik manifestu należy uruchomić i postępować zgodnie z kolejnymi krokami kreatora instalacji pakietu SSIS

Manualne wdrożenie pakietu

Wdrożenie polega na manualnym imporcie pakietu korzystając z Management Studio. Import pakiet możliwy jest z poziomu menu kontekstowego widocznego na poniższej ilustracji

Wykorzystanie narzędzia dtutil

Wdrożenie pakietu możliwe jest poprzez wykorzystanie aplikacji linii poleceń dtutil. Narzędzie w zależności od przekazanych parametrów umożliwi wdrożenie pakietu do wskzanej loklizacji. Przykładowa składnia polecenia:

dtutil /FILE “C:\SSISPackages\SSISSamplePackage.dtsx” /DestServer SSISServer /Copy SQL;SSISSamplePackage

Wykorzystanie dodatkowych narzędzi – istnieje możliwość wykorzystania narzędzi firm trzecich dla wsparcia procesu wdrażania pakietów, przykładowym narzędziem/dodatkiem tego typu jest BIDS Helper , który uaktywnia opcję wdrażania pakietu bezpośrednio z poziomu Business Intelligence Dvelopment Studio.

Wdrażanie pakietów w SQL Server Integration Services 2012 – czyli “project deployment”

Jak już zostało to wspomniane w pierwszej części artykułu w przypadku SQL Server Integration Services 2012 domyślnym modelem wdrożenia pakietów jest model wdrażania projektów. Koncepcja ta zakłada, że projekt SSIS dostępny z poziomu Data Tools będzie wdrażany w całości ( wszystkie pakiety i ich parametry). Podejście projektowe do wdrażania pakietów pozwala na lepszą kontrolę spójności wdrażanych rozwiązań, jak również łatwość przeniesienia pakietów na środowiska testowe i produkcyjne korzystając z wcześniej zdefiniowanych parametrów. Niestety w przypadku konieczności wprowadzenia jakiekolwiek zmiany w rozwiązaniu, wymagane jest wdrożenie całego projektu, a nie pojedynczego pakietu.

Budowanie projektów SSIS z poziomu Data Tools

Przed przystąpieniem do wdrożenia projektu SSIS, konieczne jest wykonanie operacji zbudowania/przebudowania projektu, w wyniku czego utworzony zostanie plik z rozszerzeniem .ipac. Po utworzeniu pliku .ipac ( który w rzeczywistości jest plikiem zip zawierającym pakiety przeznaczone do wdrożenia), należy skorzystać z opcji Deploy, która uruchamia kreator instalacji pakietu SSIS korzystając z pliku .ipac.

Ilustracja 1 - Sposób budowania pakietu SSIS oraz wdrażania z poziomu narzędzia edycji  pakietów

Wykorzystanie narzędzia ISDeploymentWizard

Podobnie jak w przypadku pojedynczych pakietów dla projektów można również wykorzystać dodatkowe narzędzie do wdrożenia - ISDeploymentWizard.exe (zlokalizowany domyślnie : <SQL Server Installation Directory>\110\DTS\Binn.), szczegóły dot. wykorzstania kreatora można uzykać korzystając z opcji “ISDeploymentWizard /?”

T-SQL

W przypadku SSIS 2012 pojawił się możliwość kontrolowania i zarządzania pakietami SSIS z poziomu kodu T-SQL. Wśród dostępnych operacji możliwych do wykonania z poziomu T-SQL jest również instalacja pakietów zawartych w projekcie SSIS. Do zarządzania SSIS z poziomu T-SQL wykorzystywane są dedykowane procedury m.in. catalog.deploy_project

Przykład polecenia T-SQL do wdrożenia pakietu:

DECLARE @SSISProjectBinary VARBINARY(MAX);

DECLARE @SSISOperationID BIGINT;

SET @SSISProjectBinary = (SELECT * FROM OPENROWSET(BULK '<project folder>\bin\Development\SSIS_Sample_Package_Deployment.ispac', SINGLE_BLOB) AS BinaryData);

EXEC catalog.deploy_project @folder_name = 'SSIS_Sample_Packages', @project_name = ' SSIS_Sample_Package_Deployment', @Project_Stream = @SSISProjectBinary, @operation_id = @ SSISOperationID out;

Osoby zainteresowane bardziej programistycznymi metodami wdrożeń mogą również wykorzystać rozwiązania oparte o PowerShell lub .NET API

Podsumowanie

W artykule wskazano metody i modele wdrożeń pakietów SSIS w zależności od wersji SQL Server. Różnorodność metod pozwala wybrać najbardziej optymalne podejście do wdrażania pakietów SSIS. Przy czym należy również pamiętać, że w przypadku wyboru projektowego modelu wdrożenia  (project deployment) każdorazowa aktualizacja pakietu wymagać będzie wdrożenia całego rozwiązania, co w przypadku, gdy rozwiązanie składa się z więcej niż jednego pakietu będzie wymagało również aktualizacji pozostałych pakietów na serwerze