SSIS --> OLE DB Command - Kłopot z "wiszącym" zadaniem (pomimo wykonania?)

0

Witam ponownie,

nowy problem - mam nadzieję nowa podpowiedź ;) Ok zatem mam paczkę w SSIS która mi wypełnia tabelę danymi jak tam potrzebuję. Dla jednej z kolumn potrzebuję wyliczyć aktualny LeadTime w dniach roboczych. Także stworzyłem funkcję to mierzącą (w Scalar-valuated Functions) i teraz... okazało się, że takie funkcje nie mogą być wykorzystane w SSIS, a przynajmniej nie w standardowym bloku gdzie wykonuje kod SQL (czyli "Execute SQL Task"). Ok google Twój przyjaciel - i już wiemy, że można użyć OLE DB Command (wewnątrz bloku Data Flow Task) - wolniejsze to i w ogóle ale w moim przypadku powinno być OK (niezbyt trudna funkcja).

I teraz mój problem ... Okazuje się, że funkcja działa i wylicza co trzeba ... ale hmm nie wychodzi poprawnie z bloku. Tzn. blok uruchamia się w swojej kolejce ... i móżdży i móżdży i możdży, a przynajmniej tak pokazuje VisualStudio ... faktycznie zaś operacja została wykonana (sprawdzałem dane są wyliczone) - ale zadanie nie zostało zakończone przez co nie może przejść dalej i cała paczka "wisi". Ilość rekordów w całej tablicy to około 500k - rekordów do zmiany/wyliczenia jakieś 230k - zmiana trwa z 10sec max.

Także Panie i Panowie co robić ? Jak żyć ? ... jakieś rozwiązanie na ten problem ? A może podpowiecie dokładnie jak użyć tej funkcji w paczce SSIS inną metodą ?
Będę wdzięczny za każdą podpowiedź tudzież całkowite rozwiązanie :D

Pozdrawiam,
BB

EDIT: Może powinienem dodać, że dla mniejszej ilości danych 1k wszystko gra - tj. kłopotliwy blok robi swoje i przechodzi dalej. Zauważyłem też, że ten blok się jakby zapętla .. .tzn jak się ciągle kręci, a ja w tym czasie wyczyszczę pole które aktualizuje to on je na nowo wypełnia dla wszystkich rekordów i robi to w chwile ... :|

1

To raczej zrozumiałe, ten obiekt wykonuje twoją operację dla każdego wiersza osobno. W konsekwencji tyle to trwa. Na Twoim miejscu wykonałbym operację wcześniej, to znaczy przed procesem ładowania danych paczką SSIS. Czyli chociażby dodanie tego wpisu do istniejącej lub dodatkowej tabeli i dopiero potem odpowiednie łączenie w paczce...

0

No dobra .. w końcu jak mi to napisałeś tak konkretnie to w pełni zrozumiałem działanie tego bloku. I faktycznie nic dziwnego, że działa to jak działa...
No nic zrobiłem poniekąd jak pisałeś (choć strasznie chciałem ograniczać ilość kwerend/widoków zwłaszcza dla takiej pierdoły) tzn. stworzyłem osobny widok gdzie liczę ilość dni z mojej funkcji, a w SSIS aktualizuje tabele z widoku.

No nic trochę szkoda, że dla niby takiej błahej sprawy trzeba kolejnego "obiektu" . Nie mniej dzięki Mariano bo ostatecznie dzięki Tobie skumałem ten blok OLE DB Command tak do końca.

1 użytkowników online, w tym zalogowanych: 0, gości: 1