2010-02-01 17 views
9

Jestem nowicjuszem w SSIS/C# (jestem generalnie programistą Java), więc przepraszam, jeśli jest to naprawdę głupie pytanie.SSIS i ponowne używanie C#

Zasadniczo problem polega na tym, że: Mam dwa zadania związane z przepływem danych, które ładują dane i eksportują je do starego płaskiego formatu plików. Formatowanie odbywa się za pomocą zadania skryptowego (C#).

Co chcę zrobić, to podzielić się wspólnym kodem między tymi dwoma. na przykład Mogłem utworzyć wspólną klasę bazową, a następnie rozszerzyć ją o dwa różne zadania skryptowe.

Wygląda jednak na to, że SSIS tak naprawdę nie zapewnia tego.

Czy ktoś wie, czy istnieje sposób na osiągnięcie tego, co chcę zrobić?

+0

Możliwy duplikat [SSIS: Jak ponownie użyć skryptu w komponencie skryptowym w innym pakiecie?] (Http://stackoverflow.com/questions/6692779/ssis-how-do-you-reuse-script-in- a-scripting-component-in-another-package) –

Odpowiedz

10

Masz rację, że nie ma prostego sposobu na zrobienie tego bezpośrednio z SSIS.

W ostatnim projekcie, wzięliśmy dwa różne podejścia, które oboje pracowali dość dobrze w zależności od tego, co trzeba zrobić:

  1. Utwórz klasę użytkową (jako prosty klasy Library) i odwoływać się do niej z Twoje zadania skryptowe. Odbywa się to prawie tak samo, jak każdy inny rodzaj odniesienia. Jeśli korzystasz z .NET 3.5, pamiętaj, że będziesz musiał ręcznie zaktualizować wersję w zadaniach skryptowych, ponieważ SSIS ma domyślną wartość 2.0. Odkryliśmy również, że gdybyśmy chcieli użyć jakiegoś sposobu wielokrotnego użycia w zestawie narzędzi (nie polegając na nazwach o zmiennym kodzie, itp.), To pakiet musiałby mieć dość dużą ilość "setup", aby móc korzystać ze skryptów narzędziowych.

  2. Utwórz niestandardowy komponent przepływu danych. Jest to proces znacznie bardziej zaangażowany, ale ostatecznie zrobi wszystko najlepiej, jeśli chodzi o unikanie powielania kodu. Zasadniczo, kodowanie rzeczywistego przepływu danych jest dość proste i nie różni się zbytnio od komponentu skryptu, ale różne kody konfiguracyjne, których potrzebujesz, mogą sprawić, że rzeczy będą skomplikowane. W SSIS nie ma też zbyt wiele wsparcia, gdy coś pójdzie nie tak. Doprowadziło to do wielu detektywistycznych prac nad naszym projektem.

Jeśli planujesz używać czegoś dużo i są zobowiązani do pozbycia standardowy kod jak najwięcej, 2 jest korzystnym rozwiązaniem. Jeśli używasz kilku miejsc tu i tam, zastanów się nad prostym podejściem 1.

+0

link w drugiej odpowiedzi daje krok po kroku dla # 1 –

1

Jestem prawie pewien, że można uzyskać dostęp do zestawów .NET w skryptach SSIS. Więc możesz to zrobić w ten sposób. Zobacz the article "Accessing .NET assemblies with SSIS" w SQL Server Central.

+0

Jest to w zasadzie dobry krok po kroku dla nr 1 w najwyższej odpowiedzi –

0

Uważam, że będzie trzeba utworzyć zespół lub usługę internetową, aby to działało.

0

To nie rozwiązuje całkowicie twojego problemu, ale pomaga w tym, że nie musisz odtwarzać wszystkich zajęć za każdym razem, gdy ich potrzebujesz (ja też robię nie chcę wdrażać zestawów referencyjnych dla mojego bieżącego projektu). Po pierwsze potrzebujesz głównej kopii swoich klas, możesz skopiować je z istniejącego zadania skryptu, używając tego samego procesu, ale w odwrotnej kolejności.

  1. Otwórz Edytor skryptu zadanie i na kliknięcie obiektu Explorer na plik projektu (st_ [Guid]), w oknie Właściwości zobaczysz lokalizację folderu projektu.(Ta lokalizacja zostanie odtworzony za każdym razem, gdy edytować zadania skryptu)

  2. w Eksploratorze, skopiuj swoje klasy do tego folderu

  3. W Eksploratorze projektu, kliknij na ikonę „Pokaż wszystkie pliki”

  4. prawym przyciskiem myszy na pliki i dodać do projektu

-1

Prawdopodobnie zbyt późno, aby odpowiedzieć na to pytanie, ale można kliknąć roztworu i dodać tam klasę. Następnie, wchodząc w skrypty, możesz powiedzieć, dodaj istniejący obiekt i wyszukaj wcześniej utworzoną klasę. Dla mnie został zlokalizowany przez rozwiązanie dla projektu. Nie przeszły przez to wdrożenie ani nic takiego, ale przynajmniej możesz uzyskać dostęp do klasy poprzez poszczególne skrypty.

+0

To działa ale ma znaczące wady. Każdy skrypt jest skompilowany z własną kopią "udostępnionego" kodu i dopóki nie dotkniesz każdego zadania korzystającego z pliku odniesienia, zmiany w udostępnianym kodzie nie będą miały żadnego wpływu. Oznacza to, że nie zostaną one automatycznie ponownie skompilowane, jeśli udostępnione źródło ulegnie zmianie. – bielawski