Successfully reported this slideshow.
Your SlideShare is downloading. ×

Zautomatyzuj swój proces wdrażania projektów SSIS

Check these out next

1 of 39 Ad
1 of 39 Ad

Zautomatyzuj swój proces wdrażania projektów SSIS

Download to read offline

Prezentacja z konferencji SQLDay 2017, Wrocław 16.05.2017.

Wdrażanie kolejnych wersji projektów SSIS jest dość monotonną ręczną pracą z poziomu SQL Server Data Tools. Rebuild/Deploy/Validate/Execute. Kiedy dochodzi do tego system kontroli wersji, branch, merge, dodawanie pakietów do projektów i przełączanie się między środowiskami DEV/TEST/PROD to robi się jeszcze nudniej.

Na sesji zaprezentuję jak można przerzucić te wszystkie czynności na serwer. Zobaczysz jak wykorzystać do tego Powershell i dostępne API .NET. Dodam do tego kontrolę wersji w TFS i przekonasz się, że testowanie i dostarczanie kolejnych wersji projektów wcale nie musi być tak uciążliwe. Zobaczysz na co zwrócić uwagę projektując własne rozwiązanie, z których zasobów skorzystać, jakie są ograniczenia i ich próby obejścia.

Prezentacja z konferencji SQLDay 2017, Wrocław 16.05.2017.

Wdrażanie kolejnych wersji projektów SSIS jest dość monotonną ręczną pracą z poziomu SQL Server Data Tools. Rebuild/Deploy/Validate/Execute. Kiedy dochodzi do tego system kontroli wersji, branch, merge, dodawanie pakietów do projektów i przełączanie się między środowiskami DEV/TEST/PROD to robi się jeszcze nudniej.

Na sesji zaprezentuję jak można przerzucić te wszystkie czynności na serwer. Zobaczysz jak wykorzystać do tego Powershell i dostępne API .NET. Dodam do tego kontrolę wersji w TFS i przekonasz się, że testowanie i dostarczanie kolejnych wersji projektów wcale nie musi być tak uciążliwe. Zobaczysz na co zwrócić uwagę projektując własne rozwiązanie, z których zasobów skorzystać, jakie są ograniczenia i ich próby obejścia.

Advertisement
Advertisement

More Related Content

Advertisement

Zautomatyzuj swój proces wdrażania projektów SSIS

  1. 1. Zautomatyzuj swój proces wdrażania projektów SSIS Bartosz Ratajczyk SQL Server Consultant, 7N b.ratajczyk@gmail.com
  2. 2. SQLDay 2017 O czym będzie? • O ułatwianiu sobie życia, czyli jak pozbyć się nudnej pracy • Wdrażanie projektów jednym skryptem –lub jednym/dwoma krokami w TFS • O tym jak przygotować sobie wszystkie konfiguracje • O różnych opcjach i przeszkodach które nas czekają
  3. 3. SQLDay 2017 O czym nie będzie? • O wdrażaniu pojedynczych pakietów • O dobrych praktykach • O DevOps jako takim
  4. 4. SQLDay 2017 Bartosz Ratajczyk • SQL Server Consultant – 7N • Trener – CBSG, Stacja.IT • Prelegent na konferencjach, spotkaniach grup PLSSUG • MCSE, MCT http://bartekr.net b.ratajczyk@gmail.com
  5. 5. SQLDay 2017 Z jakich kroków może się składać wdrożenie? 1. Kompilacja projektu 2. Utworzenie folderu dla projektu 3. Wdrożenie na serwer 4. Utworzenie środowiska 5. Ustawienie referencji środowisko – projekt 6. Utworzenie zmiennych środowiskowych 7. Konfiguracja projektu 8. Uruchomienie walidacji 9. Weryfikacja walidacji 10. Uruchomienie testowe • Testowanie (NBi, LegiTest) • Sprawdzanie zgodności ze standardami (Jamie Thomson)
  6. 6. SQLDay 2017 Podnosimy poziom trudności • Kontrola wersji –Gałąź DEV, TEST, PROD • Kilka środowisk –Serwer DEV, TEST, PREPROD, PROD • Różne konfiguracje –Ścieżki do katalogów na różnych serwerach –Połączenia do różnych baz danych • Wdrażamy na raz po kilka projektów
  7. 7. USPRAWNIAMY PRACĘ No to do roboty SQLDay 2017
  8. 8. SQLDay 2017 Kompilacja projektu – pierwsze kroki
  9. 9. SQLDay 2017 Problemy z kompilacją SQLDay 2017 • EncryptAllWithPassword, EncryptSensitiveWithPassword – wymaga ręcznego podania hasła • Potrafi się zawiesić
  10. 10. SQLDay 2017 Przygotowanie ręczne
  11. 11. SQLDay 2017 MSBuild
  12. 12. SQLDay 2017 SSISMSBuild • Dedykowane zadania kompilacji i wdrażania –DeploymentFileCompilerTask –DeployProjectToCatalogTask • Kod źródłowy do samodzielnej kompilacji http://sqlsrvintegrationsrv.codeplex.com
  13. 13. SQLDay 2017 Kompilacja: Build.proj
  14. 14. SQLDay 2017 Wdrożenie – IsDeploymentWizard • IsDeploymentWizard.exe • /Silent
  15. 15. SQLDay 2017 IsDeploymentWizard /Silent • /Silent == fire and forget • Zdarzają się przypadki, gdzie /Silent nie działa poprawnie *
  16. 16. SQLDay 2017 Znowu MSBuild
  17. 17. DEMO Kompilacja i wdrożenie SQLDay 2017
  18. 18. SQLDay 2017 Inne sposoby kompilacji/wdrożenia projektu • Skrypt Powershell z użyciem SMO • SSISBuild – Roman Tumaykin • PowerShell Continuous Integration (PSCI) – ObjectivityLtd • ISDeploymentCmd
  19. 19. SQLDay 2017 Potencjalne problemy kompilacji i wdrożenia
  20. 20. SQLDay 2017 Kompilacja: Build.proj (podejście 2)
  21. 21. SQLDay 2017 Obsługa środowisk (Environments) • Visual Studio Configuration Manager • Powershell + SMO –Array –CSV –Baza danych –JSON
  22. 22. SQLDay 2017 Configuration Manager
  23. 23. SQLDay 2017 Configuration Manager - wykorzystanie • Różne wartości parametrów dla różnych konfiguracji • Przechowywanie danych w plikach .dtproj • Można wykorzystać jako konfiguracje projektu w środowiskach • Brak jednolitego podglądu
  24. 24. SQLDay 2017
  25. 25. SQLDay 2017 Utworzenie środowiska
  26. 26. SQLDay 2017 Referencja do środowiska
  27. 27. SQLDay 2017 Konfiguracja projektu
  28. 28. SQLDay 2017 Problemy przy automatyzacji środowiska • Zmienne typu Sensitive
  29. 29. DEMO Tworzenie środowiska i konfiguracja projektu SQLDay 2017
  30. 30. SQLDay 2017 Sprawdzanie poprawności • Uruchomienie walidacji to proces asynchroniczny • Zlecamy zadanie do wykonania i możemy śledzić postęp
  31. 31. SQLDay 2017 I jeszcze sprawdzanie poprawności ::UseAllReferences ::SpecifyReference, $reference
  32. 32. SQLDay 2017 Testowe uruchomienie
  33. 33. DEMO Walidacja i test wykonania SQLDay 2017
  34. 34. SQLDay 2017 Co by tu jeszcze można? • Testy NBi • Weryfikacja zgodności z konwencją Jamie Thomsona
  35. 35. SQLDay 2017 A jak z tym TFS? • Własny proces budowania/wdrażania w TFS • Można rozbudować o kroki PowerShell do zarządzania środowiskami, walidacją, …
  36. 36. DEMO Proces automatyczny w TFS SQLDay 2017
  37. 37. SQLDay 2017 Takie to proste! • Praca nadal jest nudna, ale to komputer ją wykonuje • Do automatyzacji wykorzystaj – MSBuild – Powershell – SMO • Zaangażuj dodatkowe oprogramowanie do CI/CD

Editor's Notes

  • EncryptAllWithPassword, EncryptSensitiveWithPassword wymaga ręcznego podania hasła przy kompilacji
    devenv.com
  • Plik .ispac to po prostu .zip z innym rozszerzeniem.
    Zawiera pliki pakietów, managerów połączeń, parametrów projektu – dokładnie te same co w naszym projekcie.
    Dodatkowo zawiera dwa pliki – manifest i informacje o typach danych poszczególnych elementów.

    Nie zawiera plików, które mamy w sekcji Miscellaneous, bo one nie są serwerowi potrzebne do szczęścia
  • MSBuild domyślnie nie wie co to za typ projektu i musimy mu trochę pomóc
  • Jak skompilować samodzielnie:
    https://www.simple-talk.com/sql/ssis/deployment-automation-for-sql-server-integration-services-ssis/
    https://seddryck.wordpress.com/2016/12/27/building-the-msbuild-tasks-for-ssis-2016/
  • Trzy / cztery elementy do napisania: Project, UsingTask, Target i opcjonalnie parametryzacja – ItemGroup, ParamGroup.

    Ponieważ plik Build.proj umieszczam w tym samym katalogu co projekt SSIS podaję tylko nazwę pliku projektu – będzie pobrana jako ścieżka względna.

    Tutaj wybrano ItemGroup, ale PropertyGroup też będzie dobre, może nawet lepsze, bo Property w ramach PropertyGroup ma jedną wartość, a Item w ramach ItemGroup może mieć kilka (jak tablica)
  • * - jest w internecie kilka zgłoszonych przypadków, kiedy wdrażanie z poziomu VS działało bez zarzutu, natomiast wdrażanie tego samego przez /Silent powodowało błedy
  • Tym razem zamiast ItemGroup jest PropertyGroup; ogólnie nie ma to większego znaczenie, jeśli nie chcemy nadpisywać wartościami z zewnątrz; jeśli chcemy, to PropertyGroup
  • Demo 01: Kompilacja za pomocą pliku Build.proj (z linii komend)
    Demo 02: Wdrożenie za pomocą pliku Deploy.proj (z linii komend)
  • SMO
    http://muxtonmumbles.blogspot.com/2013/11/ssis-project-deployment-and-visual.html

    SSISBuild
    https://www.nuget.org/packages/SSISBuild/
    https://github.com/rtumaykin/ssis-build/
    PowerShell cmdlets + cmd tools
    Nie wymaga żadnych dodatkowych bibliotek czy instalacji, nie zależy od VS

    PSCI
    https://github.com/ObjectivityLtd/PSCI
    Zależy od VS

    IsDeploymentCmd
    https://github.com/tkwj/ISDeploymentCmd
  • Jeśli nazwa projektu zawiera kropki, to podczas tworzenia pliku ispac ostatni człon nazwy po kropce jest ignorowany – zarówno w kompilacji z poziomu Visual Studio jak i przez SSISMSBuild

    Podejście z SMO i PowerShell jest wrażliwe na wersję assembly, np. w moim przypadku dla SSIS 2012 bibliotekę ManagedDTS 11.0 miałem tylko w wersji 32 bit i kompilacja musiała być wykonywana w PowerShell 32bit
  • Żeby obejść problem z kropkami w nazwie bez konieczności dostosowywania kodu SSISMSBuild możemy dopisać krok, który zmieni nazwę wygenerowanego pliku .ispac
  • Skrypty Powershell + SSIS – Joost van Rossum
    http://microsoft-ssis.blogspot.com/p/powershell.html

    JSON: http://microsoft-ssis.blogspot.com/2017/05/import-and-export-ssis-catalog.html
  • Przykłady – Koen Veerbeck: http://blogs.lessthandot.com/index.php/datamgmt/dbadmin/mssqlserveradmin/ssis-deployment-with-powershell-adding/
    Hans Michiels – wszystko w T-SQL: https://www.hansmichiels.com/2016/11/04/how-to-automate-your-ssis-package-deployment-and-configuration-ssis-series/#step4
  • https://twitter.com/scottcurrie/status/779033445817278464
  • $project.Validate()
    [Microsoft.SqlServer.Management.IntegrationServices.ProjectInfo+ReferenceUsage]::UseAllReferences
    [Microsoft.SqlServer.Management.IntegrationServices.ProjectInfo+ReferenceUsage]::SpecifyReference, $reference)
  • http://microsoft-ssis.blogspot.com/2016/12/ssis-naming-conventions.html

×