| Termin | Definicja |
|---|---|
| OLE DB Source | OLE DB Source to komponent pakietu SSIS pobierający dane z tabeli lub zapytania źródłowego. OLE DB Source jako element przepływu danych w SSISOLE DB Source jest komponentem wykorzystywanym w pakietach SQL Server Integration Services do rozpoczęcia przepływu danych z relacyjnego źródła. Jego zadaniem jest otwarcie połączenia z bazą danych, wykonanie wskazanego zapytania albo odczytanie danych z wybranej tabeli, a następnie przekazanie rekordów do kolejnych elementów pakietu. W praktyce oznacza to, że komponent znajduje się na początku ścieżki, która może obejmować transformacje, filtrowanie, walidację, łączenie oraz zapis do miejsca docelowego. Nie należy traktować OLE DB Source jako samodzielnego narzędzia do kopiowania dowolnych plików. Komponent korzysta z dostawcy OLE DB, dlatego potrzebuje poprawnie skonfigurowanego połączenia i źródła obsługującego ten sposób komunikacji. Źródłem może być między innymi baza relacyjna, widok lub wynik zapytania SQL. Ostateczny zakres możliwości zależy od użytego sterownika, wersji środowiska SSIS, uprawnień konta oraz właściwości samego źródła. W konfiguracji wskazuje się menedżer połączeń OLE DB, tryb pobierania danych oraz obiekt, z którego mają być odczytane rekordy. Można użyć opcji wyboru tabeli lub widoku, ale często większą kontrolę zapewnia tryb zapytania SQL. Pozwala on ograniczyć liczbę kolumn, zastosować warunki WHERE, połączyć kilka tabel, obliczyć wartości pochodne i uporządkować wynik jeszcze przed przekazaniem go do dalszych etapów. Takie podejście ogranicza ilość danych przesyłanych w przepływie i ułatwia kontrolę nad logiką pakietu. OLE DB Source na tle innych sposobów pobierania danychW przepływie SSIS OLE DB Source można porównać z innymi komponentami źródłowymi, jednak wybór powinien wynikać z rodzaju danych oraz wymaganej obsługi sterownika. OLE DB jest często używany wtedy, gdy źródło udostępnia dojrzały dostawca relacyjny, a zadanie wymaga wykonywania zapytań, korzystania z parametrów lub sprawnego przekazywania większych zbiorów rekordów. W przypadku danych z plików płaskich, arkuszy albo określonych formatów aplikacyjnych wygodniejsze może być źródło przeznaczone specjalnie dla danego typu pliku. Ważną różnicą między odczytem tabeli a odczytem zapytania jest zakres odpowiedzialności za przygotowanie danych. Przy wyborze tabeli logika pobierania pozostaje zazwyczaj prosta, lecz dodatkowe warunki trzeba umieścić w kolejnych komponentach. Przy zapytaniu większa część selekcji może odbyć się po stronie bazy, gdzie dostępne są indeksy, optymalizator i reguły ograniczające wynik. Nie oznacza to jednak, że każde rozbudowane zapytanie będzie działało lepiej. Należy sprawdzić plan wykonania, czas odpowiedzi oraz wpływ odczytu na inne operacje korzystające z tego samego źródła. OLE DB Source różni się też od komponentu OLE DB Destination. Pierwszy element odczytuje dane i tworzy strumień wyjściowy, drugi zapisuje strumień w tabeli lub innym obsługiwanym celu. Oba komponenty mogą korzystać z podobnych menedżerów połączeń, ale mają odmienne zadania, ustawienia i obszary diagnostyki. Przy analizie błędu trzeba więc ustalić, czy problem pojawia się podczas nawiązywania połączenia, wykonywania zapytania, konwersji typów, czy dopiero podczas zapisu. Istotne jest również rozróżnienie między pobieraniem pełnego zbioru a odczytem przyrostowym. Odczyt pełny jest łatwiejszy do zrozumienia, ale przy dużej tabeli może niepotrzebnie obciążać źródło i wydłużać działanie pakietu. Odczyt przyrostowy wykorzystuje na przykład kolumnę z datą modyfikacji, znacznik wersji lub rosnący identyfikator. Taki mechanizm wymaga jednak wiarygodnej metody zapamiętywania ostatnio przetworzonego zakresu i obsługi sytuacji, w której rekord zostanie zmieniony ponownie. OLE DB Source i typowe problemy konfiguracyjneJednym z częstszych problemów jest brak zgodności pomiędzy dostawcą OLE DB a środowiskiem, w którym uruchamiany jest pakiet. Może wystąpić sytuacja, w której połączenie działa podczas projektowania, lecz kończy się błędem po uruchomieniu zadania przez usługę albo z poziomu innego procesu. Przyczyną bywa różna architektura komponentów, brak właściwego sterownika, odmienny kontekst użytkownika lub niedostępny zasób wskazany w menedżerze połączeń. Przed zmianą ustawień warto sprawdzić pełny komunikat błędu, nazwę używanego dostawcy, sposób uwierzytelniania oraz możliwość wykonania tego samego zapytania poza pakietem. Należy także zweryfikować, czy konto uruchamiające proces ma prawa do bazy, tabeli, widoku i wszystkich obiektów używanych w zapytaniu. Sam fakt, że zapytanie działa po zalogowaniu osobistym kontem, nie potwierdza jeszcze, że zadziała w automatycznym wykonaniu. Inna grupa problemów dotyczy typów danych. Kolumny tekstowe, liczbowe, daty, wartości logiczne oraz dane binarne mogą być mapowane odmiennie przez różnych dostawców. Kłopot pojawia się szczególnie wtedy, gdy długość tekstu jest zbyt mała, format daty nie odpowiada oczekiwaniom albo wartości puste są traktowane inaczej niż wartości nieobecne. Warto przejrzeć metadane wyjścia komponentu, nazwy kolumn, typy i długości, a następnie sprawdzić, czy kolejne transformacje oczekują dokładnie takiej struktury. Problematyczne bywa również użycie zapytania zwracającego kolumny o niejednoznacznych nazwach. Przy połączeniach tabel mogą pojawić się dwa pola o identycznym nagłówku, co utrudnia mapowanie i późniejsze rozpoznanie danych. Pomaga jawne wskazanie kolumn oraz nadanie im jednoznacznych aliasów. Podobnie należy uważać na SELECT *, ponieważ zmiana struktury tabeli źródłowej może nieoczekiwanie zmienić metadane przepływu. W przypadku bardzo dużych wyników znaczenie mają ustawienia buforowania, sposób pobierania danych i selektywność zapytania. Zbyt szeroki wybór kolumn, brak warunku ograniczającego zakres albo niepotrzebne sortowanie może zwiększać zużycie pamięci i czas działania. Pomocne jest testowanie na reprezentatywnym zbiorze, pomiar czasu wykonania samego zapytania oraz porównanie go z czasem pełnego przepływu. OLE DB Source w praktycznej diagnostyce przepływuDiagnostykę najlepiej prowadzić etapami. Najpierw sprawdza się, czy menedżer połączeń przechodzi test i czy wskazany dostawca jest dostępny. Następnie wykonuje się zapytanie w narzędziu odpowiednim dla danego silnika bazy, bez uruchamiania całego pakietu. Kolejny etap obejmuje uruchomienie samego źródła z niewielkim zakresem danych. Dopiero po potwierdzeniu poprawnego odczytu warto analizować komponenty transformujące i miejsce docelowe. Podczas testów przydatne jest ograniczenie wyniku do kilku rekordów, ale nie powinno się na tym poprzestawać. Mały zestaw może nie ujawnić problemu z pustą wartością, nietypową datą, przekroczeniem długości tekstu albo rzadko występującym typem danych. Po pozytywnym teście kontrolnym należy sprawdzić także rekordy brzegowe i przypadki, które w przeszłości powodowały błędy. Warto dokumentować nazwę dostawcy, sposób logowania, zapytanie, oczekiwane typy danych i zależności pomiędzy komponentami. Ułatwia to odtworzenie konfiguracji po przeniesieniu projektu na inne stanowisko. W praktyce wiele niejasności wynika nie z samego OLE DB Source, lecz z różnicy pomiędzy środowiskiem projektowym a wykonawczym. Zapisanie tych informacji ogranicza czas potrzebny na porównywanie ustawień. Jeżeli źródło udostępnia parametry, należy zweryfikować ich typ, kolejność oraz sposób przekazywania wartości. Szczególnej uwagi wymagają daty i godziny, ponieważ ustawienia regionalne, strefa czasowa oraz format zapisu mogą wpływać na wynik. Bezpieczniej jest stosować parametry lub jednoznaczne konwersje po stronie zapytania niż budować warunki przez łączenie tekstu pochodzącego z zewnętrznych danych. Przydatne jest również rozdzielenie błędów połączenia od błędów jakości danych. Brak dostępu do źródła wymaga innego działania niż nieprawidłowy typ pojedynczego pola. Jeżeli cały przepływ zatrzymuje się przy jednej wadliwej wartości, można rozważyć wcześniejszą walidację, obsługę ścieżki błędów albo świadomą konwersję. Każde takie rozwiązanie powinno jednak zachować informację o odrzuconym rekordzie, aby problem nie został ukryty. Kiedy sprawdzić OLE DB Source w serwisie komputerowymDo serwisu warto zgłosić się wtedy, gdy problem z OLE DB Source powtarza się mimo poprawnych danych logowania, gdy aplikacja działa niestabilnie po zmianie sterownika albo gdy komputer nie uruchamia środowiska potrzebnego do sprawdzenia pakietu. Pomoc może być potrzebna także przy podejrzeniu uszkodzenia systemu, konfliktu sterowników, błędów pamięci masowej lub nieprawidłowej pracy podzespołów wpływających na wykonywanie zadań bazodanowych. W Warszawie takie sprawdzenie może zostać przeprowadzone przez Warszawskie Pogotowie Komputerowe 24/7. Przed przekazaniem sprzętu warto przygotować komunikat błędu, opis momentu wystąpienia problemu, informację o ostatnich zmianach oraz dane potrzebne do odtworzenia sytuacji. Nie powinno się przekazywać haseł w zwykłej wiadomości ani pozostawiać dostępu do danych, które nie są potrzebne do diagnostyki. Wystarczający może okazać się zanonimizowany fragment zapytania, przykładowa struktura tabeli i opis oczekiwanego wyniku. Jeżeli objawy wskazują na problem sprzętowy, należy opisać, czy występują samoczynne restarty, spowolnienie odczytu, nietypowe dźwięki, zawieszanie aplikacji albo błędy przy zapisie. Takie informacje pomagają oddzielić kłopot z konfiguracją OLE DB Source od problemu z komputerem, systemem lub nośnikiem danych. Przed rozpoczęciem naprawy zaleca się zabezpieczenie kopii ważnych plików i przygotowanie listy programów, które muszą pozostać działające. Weryfikacja nie powinna ograniczać się do ponownego zainstalowania sterownika. Należy ustalić, czy źródło jest osiągalne, czy zapytanie zwraca prawidłowe kolumny, czy metadane są zgodne z dalszym przepływem oraz czy środowisko uruchomieniowe korzysta z właściwych ustawień. Dopiero całościowa analiza pozwala ocenić, czy potrzebna jest korekta pakietu, zmiana konfiguracji, uporządkowanie danych, czy też naprawa komputera, na którym wykonywane jest zadanie. |