スクリプトとforeachコンテナを使用していくつかのテーブルを更新するSSISパッケージがあります。foreachコンテナの前に、スクリプトタスクでこのクエリを使用SqlConnection
して呼び出しています。SqlCommand
SELECT TOP 10 DirectoryID, DirectoryPath FROM ProjectDirectory ORDER BY LastAudit
SqlDataReader
そして、それらを多次元配列に追加するために使用しています[10,2]。配列をオブジェクト変数に割り当ててDirectoryList
、foreachループコンテナーで配列を反復処理できるようにします。{{"1"、 "C:\ Folder1"}、{"2"、 "C:\ Folder2"}、...}のようになります。
問題は、私が数日前にこのソフトウェアを使い始めたばかりで、foreachループコンテナーがDirectoryList
変数をどのようにループするかについて混乱していることです。現時点では、コンテナーの[収集]タブで、[列挙子]を[変数列挙子からForeach]に設定し、変数を。として設定していUser::DirectoryList
ます。変数User::DirectoryID
をインデックス0にUser::DirectoryPath
設定し、インデックス1に設定しています。配列の最上位レベルだけをループさせようとしているので、各ループでID変数とパス変数が「1」と「」に割り当てられます。 C:\ Folder1、次にループを通過するときに、「2」や「C:\ Folder2」などに割り当てられます。パスを使用して情報を検索するスクリプトコンポーネントがあり、 SQLテーブルの正しい行を更新するためのID。
MessageBox.Show(Variables.DirectoryID + ", " + Variables.DirectoryPath)
デバッグするために、最初の反復のIDとパスを表示し、「8、8」を表示しています。8は、最初に表示される行のIDに対応します。次に実行すると、正しいパス「C:\ Folder1、C:\Folder1」が2回表示されます。したがって、明らかに変数マッピングは機能しておらず、両方の変数を同じインデックスにマッピングしています。いずれにせよ、それは機能していないので、Foreach From Variable Enumeratorは私が選択すべきものではないか、foreachコンテナーで多次元配列を使用できないと考えています。検索して何も見つかりませんでした。これはすべて理解するのが難しいかもしれませんが、何か提案はありますか?