Jak zauważyli @Yuck i @devarc, istnieją dwie różne i różne wartości a Zmienna trzyma. Wartość czasu projektowania to wartość przypisywana podczas tworzenia zmiennej po raz pierwszy. W Twoim przypadku zmienna przechowuje C:\Test.txt jako wartość czasu projektowania. Za każdym razem, gdy otworzysz pakiet, wyświetli się C:\Test.txt, dopóki nie zmienisz go w
Aby zmienić wartość zmiennej podczas działania pakietu, twoje opcje to ustawienie wartości lub jej obliczenie. Tutaj utworzyłem zmienną na poziomie pakietu CurrentFile
o wartości C:\Test.txt
Jedną z rzeczy, która często wpada w błąd, jest to, że poprawnie zmienili wartość czasu wykonywania, ale kiedy uruchamiają ją w BIDS, widzą „starą” wartość. Wartość wyświetlana w oknie Zmienne nie zmienia się podczas wykonywania pakietu.
Podczas wykonywania pakietu moje okno Zmienne nadal pokazuje wartość czasu projektowania (C:\Test.txt), ale prawdziwa wartość jest odzwierciedlona w oknie Locals (C:\Test2.txt)
Ustawianie wartości
Wartość prawie wszystkiego w SSIS można ustalić w czasie wykonywania za pomocą zestawu pełnych opcje wiersza poleceń lub przez konfigurację źródła. Największą różnicą w moim umyśle jest to, że takie podejście polega na tym, że wartość zawsze będzie wartością przez cały okres życia wykonania pakietu. Sekwencyjne lub równoległe wywołania pakietu mogą zmienić tę wartość, ale to wykonanie wartość pozostanie stała (z wyjątkiem wyraźnej modyfikacji wartości.
/USTAW
Wykonywanie wiersza polecenia (dtexec.exe), kliknięcie prawym przyciskiem myszy pakietu i uruchamianie z systemu plików (dtexecUI.exe) lub tworzenie kroku zadania agenta SQL w usługach integracji programu SQL Server — wszystko to umożliwia podanie wartości czasu wykonywania za pomocą polecenia SET . Korzystając z powyższej zmiennej, następujące polecenie ustawi wartość czasu wykonywania na C:\Test2.txt
dtexec /file C:\Generated.dtsx /set \Package.Variables[User::CurrentFile].Properties[Value];"C:\Test2.txt"
Konfiguracja
Usługi SSIS oferują opcję tworzenia źródeł konfiguracji, aby zapewnić pakietom wartości czasu wykonywania. Artykuł, do którego połączyłem się powyżej, znacznie lepiej opisuje zalety i wady opcji konfiguracyjnych niż tutaj. Powiem, że zwykle używam obu - moje polecenie SET konfiguruje menedżera połączeń, który jest następnie używany przez pakiet do znalezienia "pełnego" zestawu konfiguracji pakietu.
Obliczanie wartości
W SSIS istnieje wiele zadań, które mogą zmienić wartość zmiennej, a także użyć wyrażeń do zmiany wartości. Widzę je jako rzeczy, które mają wartość, gdy paczka jest w locie.
Zadania
Zadanie skryptu jest jednym z najczęściej używanych mechanizmów dla początkujących, ale uważam, że inne narzędzia w zestawie narzędzi SSIS zwykle lepiej nadają się do zmiany wartości zmiennych.
Kontener pętli foreach i Wykonaj zadanie SQL to dwa inne duże zadania, na które powinieneś zwrócić uwagę, aby przypisać wartość zmiennej.
Wyrażenia
Wyrażenia to najwspanialsze słodycze w zestawie narzędzi SSIS. Prawie każda „rzecz” w SSIS uwidacznia właściwości konfiguracji. Jest to pomocne, ale używanie przypisywania wyrażenia do budowania tych właściwości jest znakomite.
Na przykład wyobraź sobie 3 zmienne RootFolder
, FileName
i ComputedCurrentFile
z wartościami C:\, File2.txt i pustym ciągiem. W oknie Właściwości ComputedCurrentFile
zmienilibyśmy wartość EvaluateAsExpression z False na True, a następnie użylibyśmy wyrażenia takiego jak @[User::RootFolder]+ "\\" [email protected][User::FileName]
To po prostu łączy ze sobą wartość dwóch pierwszych zmiennych. Może to być pomocne, jeśli nazwa pliku do przetwarzania była standardowa, ale folder źródłowy często się zmieniał. Lub jeśli mówimy o danych wyjściowych, często używa się wyrażeń do zbudowania nazwy pliku wyjściowego na podstawie daty i prawdopodobnie czasu uruchomienia pakietu.
Wreszcie nic nie stoi na przeszkodzie mieszaniu i dopasowywaniu tych podejść. Zwykle używam konfiguracji, aby wskazać modułowi wyliczania plików właściwy folder początkowy, a następnie użyć obliczonych wartości do zidentyfikowania bieżącego pliku do przetworzenia.