Kompilowanie, wdrażanie i debugowanie obiektów niestandardowych

Dotyczy:SQL Server Środowisko SSIS Integration Runtime w usłudze Azure Data Factory

Po napisaniu kodu dla niestandardowego obiektu dla Integration Services musisz zbudować asemble, wdrożyć go i zintegrować z SSIS Designer, aby był dostępny do użycia w pakietach, a także testować i debugować.

Kroki w budowaniu, wdrażaniu i debugowaniu niestandardowego obiektu dla usług integracyjnych

Już napisałeś niestandardową funkcjonalność dla swojego obiektu. Teraz musisz to przetestować i udostępnić użytkownikom. Kroki są bardzo podobne dla wszystkich typów niestandardowych obiektów, które można tworzyć dla usług integracyjnych.

Oto kroki, jak go zbudować, wdrożyć i przetestować.

  1. Podpisz montaż do wygenerowania silnym nazwiskiem.

  2. Zbuduj montaż.

  3. Wdrożenie asemblera, przenosząc lub kopiując go do odpowiedniego folderu Integration Services.

  4. Zainstaluj asembler w globalnej pamięci podręcznej asemblera (GAC).

    Obiekt jest automatycznie dodawany do skrzynki narzędziowej.

  5. Jeśli zajdzie taka potrzeba, rozwiązuj problem z wdrożeniem.

  6. Przetestuj i debuguj swój kod.

Teraz możesz używać SSIS Designer w SQL Server Data Tools (SSDT) do tworzenia, utrzymania i uruchamiania pakietów skierowanych do różnych wersji SQL Server. Więcej informacji o wpływie tej poprawy na Twoje niestandardowe rozszerzenia znajdziesz w artykule Getting your SSIS custom extensions to be supported by the multi-version support of SSDT 2015 for SQL Server 2016

Podpisanie Zgromadzenia

Gdy asembler ma być współdzielony, musi być zainstalowany w globalnej pamięci podręcznej asemblera. Po dodaniu asemblera do globalnej pamięci podręcznej asemblera, asembler może być używany przez aplikacje takie jak SQL Server Data Tools (SSDT). Wymaganiem globalnej pamięci podręcznej asemblera jest podpisanie silnej nazwy, co gwarantuje, że asembler jest globalnie unikalny. Zgromadzenie o silnej nazwie ma w pełni kwalifikowaną nazwę, która zawiera nazwę, kulturę, klucz publiczny oraz numer wersji zgromadzenia. Runtime wykorzystuje te informacje do zlokalizowania zespołu i odróżnienia go od innych zespołów o tej samej nazwie.

Aby podpisać zgromadzenie silną nazwą, najpierw musisz posiadać lub stworzyć parę klucza publicznego/prywatnego. Ta publiczna i prywatna para kluczy kryptograficznych jest używana podczas budowy do stworzenia zespołu o silnej nazwie.

Aby uzyskać więcej informacji o silnych nazwach i krokach, które należy wykonać, aby podpisać asembler, zobacz następujące tematy w dokumentacji SDK .NET Framework:

  • Strong-Named Zgromadzenia

  • Tworzenie pary kluczy

  • Podpisanie Zgromadzenia z silnym nazwiskiem

Możesz łatwo podpisać swój asembler jako silną nazwę w Visual Studio podczas budowania. W oknie dialogowym Project Properties wybierz zakładkę Signing. Wybierz opcję Sign the assembly, a następnie podaj ścieżkę do pliku klucza (.snk).

Budowanie Zgromadzenia

Po podpisaniu projektu musisz zbudować lub odbudować projekt lub rozwiązanie, korzystając z poleceń dostępnych w menu Build w SQL Server Data Tools. Twoje rozwiązanie może zawierać osobny projekt niestandardowego interfejsu użytkownika, który również musi być podpisany silną nazwą i może być tworzony jednocześnie.

Najwygodniejszą metodą wykonania kolejnych dwóch kroków – wdrożenia asemblera i zainstalowania go w globalnej pamięci podręcznej asemblera – jest zaprogramowanie tych kroków jako zdarzenia post-build w Visual Studio. Zdarzenia budowania są dostępne na stronie Kompilacja w Project Properties dla Visual Basic project oraz ze strony Build Events dla project C#. Pełna ścieżka jest wymagana dla narzędzi wiersza poleceń, takich jak gacutil.exe. Cudzysłowy są wymagane zarówno wokół ścieżek zawierających sprady, jak i wokół makr takich jak $(TargetPath), które rozszerzają się na ścieżki zawierające spacji.

Oto przykład linii poleceń po zdarzeniu kompilacji dla niestandardowego dostawcy logów:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\gacutil.exe" -u $(TargetName)  
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\gacutil.exe" -i $(TargetFileName)  
copy $(TargetFileName) "C:\Program Files\Microsoft SQL Server\130\DTS\LogProviders "  

Wdrażanie Zgromadzenia

Projektant SSIS lokalizuje niestandardowe obiekty dostępne do użycia w pakietach, wyliczając pliki znajdujące się w serii folderów tworzonych podczas instalacji SQL Server Integration Services. Gdy użyte są domyślne ustawienia instalacji SQL Server, ten zestaw folderów znajduje się w C:\Program Files\Microsoft SQL Server\130\DTS. Jednak jeśli utworzysz program konfiguracyjny dla swojego niestandardowego obiektu, powinieneś sprawdzić wartość klucza rejestru HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\SSIS\Setup\DtsPath , aby zweryfikować lokalizację tego folderu.

Note

Aby dowiedzieć się, jak wdrażać niestandardowe komponenty, aby dobrze współpracowały z wsparciem dla wielu wersji w SQL Server Data Tools, zobacz Getting your custom extensions to be supported by the multi-version support of SSDT 2015 for SQL Server 2016.

Możesz umieścić skład w folderze na dwa sposoby:

  • Przenieś lub skopiuj skompilowany asembl do odpowiedniego folderu po jego zbudowaniu. (Dla wygody możesz uwzględnić polecenie kopiowania w zdarzeniu Post-build.)

  • Zbuduj zespół bezpośrednio w odpowiednim folderze.

Następujące foldery wdrożenia w C:\Program Files\Microsoft SQL Server\130\DTS są używane dla różnych typów obiektów niestandardowych:

Obiekt niestandardowy Folder do wdrażania
Zadanie Zadania
Menedżer połączeń Connections
Dostawca usług dziennika LogProvidery
Komponent przepływu danych PipelineComponents

Note

Do tych folderów kopiowane są asemblery, aby wspierać wyliczanie dostępnych zadań, menedżerów połączeń i tak dalej. Dlatego nie musisz wdrażać asembli zawierających tylko niestandardowy interfejs użytkownika dla niestandardowych obiektów do tych folderów.

Instalacja asemblera w globalnej pamięci podręcznej asemblera

Aby zainstalować asembl zadań w globalnej pamięci podręcznej asemblerowej (GAC), użyj narzędzia wiersza poleceń gacutil.exelub przeciągnij asemblery do katalogu %system%\assembly . Dla wygody możesz także uwzględnić wezwanie do gacutil.exe w wydarzeniu po budowie (Post-build Event).

Następne polecenie instaluje komponent o nazwie MyTask.dll w GAC za pomocą gacutil.exe.

gacutil /iF MyTask.dll

Musisz zamknąć i ponownie otworzyć SSIS Designer po zainstalowaniu nowej wersji niestandardowego obiektu. Jeśli zainstalowałeś wcześniejsze wersje swojego niestandardowego obiektu w globalnej pamięci podręcznej asemblera, musisz je usunąć przed instalacją nowej wersji. Aby odinstalować asembler, uruchom gacutil.exe i podaj nazwę asemblera z opcją /u .

Więcej informacji o globalnej pamięci podręcznej asemblera, zobacz Global Assembly Cache Tool (Gactutil.exe) w narzędziach .NET Framework.

Rozwiązywanie problemów z wdrożeniem

Jeśli Twój niestandardowy obiekt pojawia się w Toolboxie lub na liście dostępnych obiektów, ale nie możesz dodać go do pakietu, spróbuj następująco:

  1. Sprawdź w globalnej pamięci podręcznej asemblera, gdzie znajdziesz wiele wersji swojego komponentu. Jeśli w globalnej pamięci podręcznej asemblera jest wiele wersji komponentu, projektant może nie być w stanie załadować twojego komponentu. Usuń wszystkie instancje asemblera z globalnej pamięci podręcznej asemblerowej i dodaj go ponownie.

  2. Upewnij się, że w folderze deployment istnieje tylko jedna instancja asemblera.

  3. Odśwież zestaw narzędzi.

  4. Dołącz Visual Studio do devenv.exe i ustaw punkt przerwania, aby przejść przez kod inicjalizacyjny, aby upewnić się, że nie wystąpią wyjątki.

Testowanie i debugowanie kodu

Najprostszym podejściem do debugowania metod wykonawczych niestandardowego obiektu jest rozpoczęcie dtexec.exe od Visual Studio po zbudowaniu własnego obiektu i uruchomienie pakietu, który korzysta z tego komponentu.

Jeśli chcesz debugować metody projektowe komponentu, takie jak metoda Validate, otwórz pakiet, który używa komponentu w drugiej instancji Visual Studio i dołącz do jego devenv.exe procesu.

Jeśli chcesz także debugować metody wykonawcze komponentu, gdy pakiet jest otwarty i uruchamiany w SSIS Designer, musisz wymusić pauzę w wykonaniu pakietu, aby również dołączyć do procesu DtsDebugHost.exe .

Aby debugować metody działania obiektu poprzez dołączenie do dtexec.exe

  1. Podpisz i zbuduj swój projekt w konfiguracji Debug, wdroż go i zainstaluj w globalnej pamięci podręcznej asemblera, jak opisano w tym temacie.

  2. Na zakładce Debug w Project Properties wybierz Start program external program jako Akcję Start i znajdź dtexec.exe, która jest domyślnie zainstalowana w C:\Program Files\Microsoft SQL Server\130\DTS\Binn.

  3. W polu tekstowym Opcje wiersza poleceń , w sekcji Start Options, wprowadź argumenty wiersza poleceń potrzebne do uruchomienia pakietu korzystającego z Twojego komponentu. Często argument wiersza poleceń składa się z przełącznika /F[ILE], po którym następuje ścieżka i nazwa pliku .dtsx. Aby uzyskać więcej informacji, zobacz dtexec Utility.

  4. Ustaw punkty przerwania w kodzie źródłowym tam, gdzie to jest stosowne, w metodach uruchomieniowych komponentu.

  5. Realizuj swój projekt.

Aby debugować niestandardowe metody projektowe poprzez dołączenie do SQL Server Data Tools

  1. Podpisz i zbuduj swój projekt w konfiguracji Debug, wdroż go i zainstaluj w globalnej pamięci podręcznej asemblera, jak opisano w tym temacie.

  2. Ustaw punkty przerwania w kodzie źródłowym tam, gdzie to jest stosowne, w metodach projektowych niestandardowego obiektu.

  3. Otwórz drugą instancję Visual Studio i załaduj projekt Integration Services, który zawiera pakiet korzystający z tego niestandardowego obiektu.

  4. Z pierwszej instancji Visual Studio dołącz do drugiej instancji devenv.exe, w której pakiet jest ładowany, wybierając Attach to Process w menu Debug pierwszej instancji.

  5. Uruchom pakiet z drugiej instancji Visual Studio.

Debugowanie metod wykonawczych niestandardowego obiektu poprzez podłączenie do SQL Server Data Tools

  1. Po zakończeniu kroków wymienionych w poprzedniej procedurze, wymusz przerwę w wykonaniu pakietu, aby móc dołączyć do DtsDebugHost.exe. Możesz wymusić tę pauzę, dodając punkt przerwania do zdarzenia OnPreExecute lub dodając zadanie skryptowe do projektu i wprowadzając skrypt, który wyświetla okno z komunikatem modalnym.

  2. Uruchom pakiet. Gdy nastąpi pauza, przejdź do instancji Visual Studio, w której otwarty jest twój projekt kodu, i wybierz Dołącz do procesu w menu Debug. Upewnij się, że przypisujesz instancję DtsDebugHost.exe oznaczoną jako Managed, x86 w kolumnie Type , a nie tylko instancję oznaczoną jako x86 .

  3. Wróć do wstrzymanego pakietu i przejdź dalej za punkt przerwania lub kliknij OK , aby usunąć pole komunikatu wywołane przez zadanie skryptowe, i kontynuuj wykonywanie pakietu oraz debugowanie.