Własna kontrolka SSIS, część 6 – podłączamy się do serwera SFTP

Mamy szkielet kontrolki. Umiemy napisać coś, co się poprawnie kompiluje i nawet pojawia się w przyborniku SSIS (SSIS Toolbox). Sukces! To teraz pora sprawić, żeby kontrolka mogła się połączyć z serwerami SFTP i SQL. Do roboty.

Na pierwszy ogień połączymy się z SFTP (dla FTPS będzie podobnie). Jeśli nie mamy jakiegoś serwera pod ręką proponuję ściągnąć darmowy Rebel Tiny SFTP Server, który bardzo dobrze się sprawdza do testowania własnego kodu. Po uruchomieniu automatycznie generują się potrzebne klucze i serwer jest gotowy do działania.
Czytaj dalej

Reklamy

Podłącz się do SQL Server na lokalnej maszynie wirtualnej Virtualbox

W ramach funkcjonalności kontrolki SSIS będziemy wykorzystywać SQL Server jako bazę dla tabel pomocniczych przechowujących informacje o plikach na serwerze, metadane przetwarzań i listę plików do pobrania. W tym celu pomyślałem, żeby wykorzystać jedną z maszyn wirtualnych postawionych na Virtualbox. System operacyjny maszyny to Windows 2012 R2 Standard z zainstalowanym SQL Server 2016 CTP3 jako instancją nazwaną. Co teraz trzeba zrobić, żeby połączyć się z systemu głównego/ gospodarza(?) (host) do systemu gościa (guest)?
Czytaj dalej

Własna kontrolka SSIS – część 5 – A jak sprawdzimy, czy działa?

Zanim zagłębimy się w sprawianie, żeby kontrolka robiła to, czego od niej oczekujemy warto zadać sobie pytanie – a jak sprawdzić, że to faktycznie działa? To znaczy – nie w ramach testów jednostkowych, czy poprawności kompilowania – jak się przekonać, że kontrolkę mogę podpiąć do swojego projektu SSIS i mogę z niej korzystać? Najlepiej od razu stworzyć pakiet i spróbować dodać do niego kontrolkę.

Do istniejącego Solution (jakoś ciężko mi się przyzwyczaić do tłumaczenia ‚rozwiązanie’) dodaję nowy projekt: prawy przycisk myszy w oknie Solution Explorer na nazwie, potem Add > New Project… i  Business Intelligence > Integration Services > Integration Services Project. Jeśli nie widzisz u siebie takiej opcji, to albo nie masz zainstalowanych SQL Server Data Tools, albo nie są zainstalowane poprawnie. Do nowego projektu automatycznie dodany zostaje pusty pakiet o nazwie Package1.dtsx – ale zmieniamy mu nazwę na CustomTaskTest.dtsx – bo czemu nie?

Mamy projekt, mamy pakiet. A co dalej? Spróbujmy sprawić, żeby kontrolka była widoczna w SSIS Toolbox, z którego będziemy mogli ją przeciągać do Control Flow.
Czytaj dalej

Własna kontrolka SSIS, część 4 – Początki projektu (wreszcie)

Jednym z dużych plusów konkursu Daj Się Poznać jest możliwość czytania tekstów osób, które też uczą się nowych rzeczy. Git-a znam, jednak dość słabo bo na co dzień nie muszę korzystać (prędzej SVN czy TFS) – dlatego fajnie czytało się tekst Justyny o podstawach Git-a. Tyle darmowej i zasłużonej reklamy i do rzeczy.

Kontrolka SSIS powstanie w Visual Studio 2015 Community. W wersji Express też się da, ale skoro jest możliwość użycia bardziej zaawansowanej darmowej wersji, to czemu nie? Żeby korzystać z Git-a w VS potrzebna jest wtyczka. W menu wybieramy Tools > Extensions and Updates... i wybieramy/szukamy wtyczki GitHub Extension for Visual Studio. Potem w ramach Team Explorer łączymy się przez Connect ze swoim kontem na GitHub-ie, wybieramy Clone żeby pobrać repozytorium i gotowe. O ile oczywiście repozytorium już mamy utworzone. Jeśli nie mamy, to jak najbardziej możemy utworzyć z poziomu wtyczki.
Czytaj dalej

Trick (?) z processing-instruction()

Całkiem niedawno szukając materiałów na temat przetwarzania XML znalazłem opis pewnego tricku: jeśli chcesz ładnie wyświetlić wielolinijkowy tekst wyświetlany w SSMS w siatce wyników – zastosuj taki kawałek kodu:

SELECT SomeCol AS 'processing-instruction(q)'
FROM Whatever
FOR XML PATH(''), TYPE

I tyle. Akurat ten fragment pochodzi ze strony Davida Wentzela, ale widziałem go u kilku innych osób.

No super, ale dlaczego tak i co to w ogóle oznacza? Czemu działa? I co pokazuje?
Czytaj dalej

Własna kontrolka SSIS, część 3 – O pobieraniu danych

Wiemy jak w podstawowy sposób odczytać listę plików w katalogu na serwerze. To teraz pobierzmy te pliki. Jeden z kroków kontenera pakietu SSIS generuje plik tekstowy zawierający listę plików do pobrania. Każdy z plików jest podawany w odrębnej linii – potem wczytamy plik, rozbijemy go na linie i w pętli wczytamy każdy z nich po kolei.

Dla przypomnienia – ważne jest, żeby podawać pełne ścieżki do plików względem katalogu głównego. Przeglądając dokumentację WinSCP zauważyłem jeszcze jedną nowość w wersji 5.8 beta: pojawił się parametr string FullName , który zwraca pełną ścieżkę do pliku. Nie trzeba będzie sklejać parametru przesyłanej ścieżki z nazwą pliku odczytaną jako Name. Ponieważ w kontrolce będziemy korzystać z wersji beta biblioteki to warto mieć na uwadze.

Przejdźmy do kodu. Na razie popatrzymy jak to wygląda w Powershell. Podobnie jak poprzednio zaczynamy od parametrów i funkcji, która pobierze plik. Nadal korzystamy z przykładu z dokumentacji.
Czytaj dalej

Własna kontrolka SSIS, część 2

Tym razem popatrzymy na obsługę jednej z dwóch funkcjonalności kontrolki. Sprawdzimy jakie pliki są na serwerze w katalogu, który nas interesuje, a w następnym poście pobierzemy pliki, które nam wyjdą z przepatrywania metadanych i tabel pomocniczych. Obie funkcjonalności będą obsługiwane z wykorzystaniem winscp.dll.

W obecnym rozwiązaniu pobieranie listy plików wykorzystuje trochę zmodyfikowany przykładowy skrypt przeszukiwania plików katalogu. Ten dostępny na stronie jest nieco bardziej zaawansowany – bo wręcz pobiera pliki i sprawdza ich zawartość, a nas interesuje tylko lista plików (ewentualnie z jakąś maską – np. chcemy tylko pliki .csv). Pierwszy zmodyfikowany fragment definiujący funkcję SearchDirectory poniżej. Czytaj dalej