У меня есть пакет SSIS, который обновляет пару таблиц, используя скрипты и контейнер foreach среди других вещей. Я использую SqlConnection
и SqlCommand
вызвать этот запрос в задаче сценария перед контейнером Еогеасп:Как я могу использовать контейнер цикла foreach в SSIS для итерации через многомерный массив?
SELECT TOP 10 DirectoryID, DirectoryPath FROM ProjectDirectory ORDER BY LastAudit
и я использую SqlDataReader
, чтобы добавить их в многомерный массив [10,2]. Я назначаю массив переменной объекта DirectoryList
, чтобы я мог перебирать ее в контейнере цикла foreach. Он должен выглядеть как {{"1", "C: \ Folder1"}, {"2", "C: \ Folder2"}, ...} Верю.
Проблема в том, что я только начал использовать это программное обеспечение пару дней назад, и я смущен тем, как контур цикла foreach проходит через переменную DirectoryList
. На данный момент на вкладке коллекции контейнера у меня есть Enumerator, установленный в Foreach From Variable Enumerator, с переменной, заданной как User::DirectoryList
. У меня есть переменные User::DirectoryID
, установленные для индекса 0, а User::DirectoryPath
установлены в индекс 1. Я пытаюсь заставить его пройти через только верхний уровень массива, так что в каждом цикле идентификаторы и переменные пути присваиваются «1», и «C: \ Folder1», а затем в следующий раз, когда он пройдет через цикл, они назначены «2» и «C: \ Folder2» и т. д. У меня есть компонент скрипта, который использует путь для поиска некоторой информации, и я используйте id для обновления правильной строки таблицы sql.
Чтобы отладить, мне нужно показать ID и путь MessageBox.Show(Variables.DirectoryID + ", " + Variables.DirectoryPath)
первой итерации, и она показывает «8, 8». 8 соответствует идентификатору строки, которая должна отображаться первой. В следующий раз, когда он пройдет, он даст мне правильный путь дважды: «C: \ Folder1, C: \ Folder1». Таким образом, видимо, отображение переменных не работает, оно отображает обе переменные в один и тот же индекс. В любом случае он не работает, поэтому я думаю, что (или, может быть, и то, и другое?) Foreach From Variable Enumerator не тот, который я должен выбрать, или что я не могу использовать многомерный массив в контейнере foreach. Я искал и ничего не нашел, и все это может быть трудно понять, но любые предложения?
Удивительного спасибо! Я в конечном итоге использовал Execute SQL Task, потому что, как вы сказали, это действительно весь скрипт. Теперь я просто пытаюсь выяснить, как передать переменную DateTime в другую задачу SQL Execute и обновить одну строку в таблице. Спасибо, спасибо! –