Не удается поместить задачу SQL в цикл по каждому элементу

Я новичок в SSIS и полагаюсь на книгу, поэтому на этот вопрос несложно ответить.

Я хочу импортировать данные из всех текстовых файлов в каталоге. Поэтому я создаю контейнер Foreach.

Первое, что я хочу сделать в цикле, это выполнить задачу SQL, чтобы удалить и создать целевую таблицу.

Затем я хочу загрузить данные в целевую таблицу из выбранного текстового файла с помощью задачи потока данных.

Затем я хочу выполнить задачу SQL, чтобы загрузить таблицы SQL из таблицы Landing и выполнить некоторые вычисления.

Проблема в том, что в цикле Foreach я не могу связать задачу SQL с задачей потока данных. Сообщение, которое я получаю,

Не удается создать соединитель. Не удается подключить исполняемые файлы из разных контейнеров.

Итак, как мне это сделать?


person arame3333    schedule 19.01.2010    source источник


Ответы (6)


Как насчет скриншота? Я использовал эти 2 компонента в контейнере цикла раньше без проблем, я предполагаю, что графический интерфейс здесь немного обманчив.

person Jason Cumberland    schedule 20.01.2010
comment
Я знаю, что давать вам правильный ответ кажется довольно неубедительным... но когда я вошел в систему на следующий день, у меня не было проблем. Итак, как вы говорите, это должен быть графический интерфейс! Как очень странно! - person arame3333; 21.01.2010
comment
Нп, спасибо за ответ. У меня было то же самое, иногда интерфейс глючил. Вы 2005 или 2008? - person Jason Cumberland; 22.01.2010
comment
Я на 2005. Кто использует 2005, берегитесь! - person arame3333; 22.01.2010

Я знаю, что это старая тема. Я хотел добавить к этому, хотя это может быть кому-то полезно.

В моем случае у меня был контейнер цикла foreach с некоторыми FTP-задачами и задачами сценариев, и мне все еще нужно добавить больше в этот цикл foreach. Я переименовал цикл foreach, а затем добавил новую задачу сценария в нижней части потока контейнера цикла foreach. Когда я попытался подключить текущую задачу FTP в конце потока контейнера цикла foreach к новой задаче сценария, которую я добавил внизу, я получил сообщение об ошибке «Невозможно создать соединитель. Невозможно подключить исполняемые файлы из разных контейнеры».

Поэтому я перетащил текущие задачи FTP и задачи сценариев за пределы недавно переименованного контейнера цикла foreach (или я подозреваю, что мог бы вырезать их и вставить вне контейнера цикла foreach). Затем я перетащил их все обратно в недавно переименованный контейнер цикла foreach. Затем я снова успешно подключил их все, не получив этой ошибки.

Таким образом, кажется, что как только вы переименуете контейнер цикла foreach БЕЗ полного завершения, когда вы добавите новый значок задачи в нижнюю часть потока недавно переименованного контейнера цикла foreach, вы можете или получите сообщение об ошибке о невозможности подключения из разные контейнеры (поскольку я предполагаю, что недавно переименованный контейнер цикла foreach считается «другим», чем старое имя того же самого контейнера цикла foreach.

person Hviezdoslav    schedule 20.01.2015

У меня была похожая проблема, когда оба компонента находились в цикле for. Принимая во внимание, что (аналогично комментарию rageit) один из подкомпонентов фактически находился сверху, а не внутри цикла foreach.

Быстрое исправление состояло в том, чтобы вырезать компонент, выбрать цикл foreach и вставить его.

person Alex KeySmith    schedule 12.11.2012

Похоже, вы пытаетесь подключить задачу Sql в цикле foreach к задаче DataFlow, которая не находится в цикле. Если это то, что вы намереваетесь, вам нужно взять соединение из цикла ForEach и подключить его к потоку данных. Однако если вы хотите, чтобы и SQLTask, и поток данных выполнялись в цикле ForEachLoop, вам необходимо поместить поток данных в цикл ForEach, после чего вы сможете подключить SQLTask к потоку данных.

person William Salzman    schedule 19.01.2010
comment
Намерение состоит в том, чтобы они оба были в петле. Они выглядят так, как будто я перетащил их обоих в контейнер Foreach на диаграмме. - person arame3333; 20.01.2010
comment
Ошибка Не удается подключить исполняемые файлы из разных контейнеров, похоже, показывает, что задачи находятся в разных контейнерах. Выделите задачу потока данных, щелкните ее правой кнопкой мыши и выберите «Добавить ограничение приоритета». Если задача SQL отсутствует в списке «От», значит, поток данных находится не в том же контейнере, что и задача SQL. - person William Salzman; 20.01.2010
comment
Со мной случилось то же самое. По-видимому, элемент потока управления не содержался в цикле for each, но находился поверх контейнера for each. VS2008. - person rageit; 15.02.2012

Ни один не был моим случаем. Я просто переместил его из другого контейнера в новый контейнер. Пришлось пересоздавать задание. Нет свойства, показывающего, в каком контейнере находится задача. Определенно ошибка графического интерфейса. Я использую БИ 2008

person user2788852    schedule 17.09.2013

Решение, которое решило мою проблему, - это вырезать компонент и вставить его обратно. Если существует иерархия задач, вырежьте все задачи одну за другой, чтобы удалить их соединения, и вставьте их обратно, а затем подключитесь сверху.

person Aseem    schedule 19.02.2015