2010-05-10 9 views
21

Mam pakiet SSIS z przepływem sterowania zawierającym kilka zadań sql wykonać w sekwencji.wybiórczo wykonać zadanie w ssis control flow

Potrzebuję sprawdzić flagę dla każdego z zadań i uruchomić zadanie, jeśli jest ustawione, jeśli nie pominąć i przejść do następnego.

Każde z tych zadań wykonuje zapisany proces. Więc mogę sprawdzić w proc i "Return", jeśli nie jest ustawiony. Szukałem rozwiązania "SSIS", jeśli w ogóle.

TIA

PS

Odpowiedz

25

Między zadań przepływu sterowania, kliknij na strzałkę i wybierz Edytuj. Gdy to zrobisz, pojawi się okno dialogowe, które pozwala sprawdzić "ograniczenie" (sukces, zakończenie lub niepowodzenie) zadania, "wyrażenie" (tzn. Możesz zlecić wykonanie sql zadania zwrócić wartość, zapisać tę wartość w zmienna i sprawdź wartość tej zmiennej w wyrażeniu, aby określić, czy kontynuować w dół ścieżki, którą edytujesz), "wyrażenie i ograniczenie" oraz "wyrażenie lub ograniczenie". Te dwa ostatnie są takie same, z wyjątkiem logiki. "Wyrażenie i ograniczenie" wymaga prawdziwego warunku zarówno w wyrażeniu, jak i ograniczeniu, "wyrażenie lub ograniczenie" wymaga prawdziwego warunku tylko jednego wyrażenia i ograniczenia.

+0

Mam tylko jedną ścieżkę. I kroki na tej ścieżce muszą sprawdzić flagę, jeśli nie ustawić, przejdź do kroku na ścieżce. CZY to możliwe z "ograniczeniem"? –

+0

Nie, ograniczenie sprawdza tylko status wykonania zadania, do którego jest podłączone wejście. Jeśli zadanie powiodło się, wówczas test ograniczenia będzie prawdą, jeśli ustawiono na Sukces, jeśli zadanie się nie powiedzie, test ograniczenia będzie prawdą, jeśli ustawiono na Niepowodzenie, Wiązanie jest prawdziwe, gdy zadanie zostanie zakończone, jeśli jest ustawione na ukończenie. Chcesz ekspresji. W przechowywanym procrze zwróć wartość flagi jako wynik. Umieść dane wyjściowe w zmiennej. Na swojej ścieżce użyj wyrażenia i przetestuj zmienną w zależności od swojego stanu. Jeśli true, ścieżka przejdzie do następnego kroku w twoim przepływie. –

+0

Co z pierwszym zadaniem? – GeorgiG

40

Myślę, że twoje pytanie było takie samo jak moje, w którym chciałem kontrolować wykonanie zadania "inline" w moim strumieniu sterowania.

Najprostszym sposobem, jaki znalazłem, nie jest wyrażenie na łączach danych między obiektami sterowania, ale użycie wyrażeń na samym obiekcie kontrolnym i ustawienie wartości "Wyłącz" za pomocą wyrażenia. W ten sposób podczas wykonywania obiekt jest albo pomijany, albo nie na podstawie oceny wyrażenia.

Jako przykład, chciałem wykonać "Execute SQL Task", aby usunąć moje indeksy na podstawie tego, czy zmienna o nazwie "ExtractType" była równa "Full". Jeśli tak było, chciałem usunąć indeksy z moich tabel, zanim zrobię moje pełne obciążenie.

+1

Dobry połów, zapomniałem o wyrażeń. Łatwo przeoczyć wszystkie miejsca w SSIS, w których można używać wyrażeń. Gdybym mógł głosować na twoją odpowiedź dalej, zrobiłbym to. Dzięki za odpowiedź! –

+0

Amazing! Spróbuję tego. Dziękuję VM! – GeorgiG

Powiązane problemy