Пакет SSIS — сохранить то же свойство соединения в соединении с Excel

Я использую SSDT 2017. Существует 3 задачи потока данных (они связаны с помощью ограничений приоритета), которые загружают данные из Excel в таблицы базы данных. Когда я запускаю каждую задачу по отдельности, она отображается как успешная, но когда я запускаю весь пакет, она отображается как завершенная без какой-либо зеленой галочки на задачах, что означает, что задачи не выполняются. После того, как я изменил свойство RetainSameConnection Excel на True, все задачи успешно выполняются.

Я не видел такого поведения в более ранних версиях. Это новое изменение в версии 2017 или я что-то упустил?


person Srikar mogaliraju    schedule 25.02.2019    source источник
comment
Единственный раз, когда я видел, что SSIS не выполняет шаги таким образом, было из-за проблемы с управлением потоком или чего-то вроде прав доступа к файлам. Что, если вы поместите все 3 в один контейнер последовательности? У вас такая же проблема?   -  person Jacob H    schedule 25.02.2019
comment
Я уверен, что нет никаких проблем с потоком управления или разрешением доступа. Единственное, что я изменил, — это свойство RetainSameConnection.   -  person Srikar mogaliraju    schedule 25.02.2019
comment
Потоки данных выполняются параллельно или они связаны с использованием ограничений приоритета?   -  person Hadi    schedule 26.02.2019
comment
@Hadi Они связаны с использованием ограничений приоритета.   -  person Srikar mogaliraju    schedule 26.02.2019
comment
@Srikarmogaliraju, что произойдет, если вы установите для второго и третьего свойства Delay Validation задачи потока данных значение true ??   -  person Hadi    schedule 27.02.2019
comment
Вы уверены, что пакет не выполняется? Выполнение выполняется вне Visual Studio. Визуальная индикация выполненных задач асинхронно обновляется на основе сообщений, полученных от этого процесса. По мере того, как ИС становилась все более зрелой, согласованность пользовательского интерфейса улучшалась... но все еще возможно, что она просто неточно сообщает. Содержат ли ваши результаты ожидаемые результаты?   -  person Todd McDermid    schedule 27.02.2019
comment
@Srikarmogaliraju что-нибудь новое в связи с этой проблемой? Вы пробовали предоставленный ответ? хорошо оставить комментарий к предоставленному ответу, если он не решил проблему, тогда вы можете более подробно рассказать об ответчике, если он решил проблему или дает некоторые идеи, почему бы не проголосовать или не принять??!!   -  person Yahfoufi    schedule 11.03.2019
comment
@Yahfoufi Я еще не пробовал приведенные выше ответы. Я попробую их и добавлю комментарии.   -  person Srikar mogaliraju    schedule 11.03.2019
comment
@Srikarmogaliraju после поиска в Google похоже, что это одна из причин, по которой свойство ReatinSameConnection найдено (предотвратить блокировку множественного доступа к файлу Excel). Так что у вас нормальная ситуация. Кроме того, предоставленный ответ поясняет, почему соединение заблокировано.   -  person Yahfoufi    schedule 14.03.2019


Ответы (1)


Пытаюсь разобраться в проблеме

Основываясь на вопросе и комментариях, вы используете 3 задачи потока данных, которая содержит 3 исходных компонента Excel, использующих один и тот же диспетчер соединений.

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

При использовании RetainSameConnection пакет запускает методAcquireConnection один раз и использует его несколько раз, после чего проблема решена.

Что-то попробовать

Попробуйте изменить свойство Delay Validation на True, а свойство ValidateExternalMetadata на False для каждого Excel Source во всех задачах потока данных. Это может решить проблему, если соединение устанавливается только для целей проверки. Если это не работает, это означает, что вызывается метод подключения для получения файла, чтобы заблокировать файл для чтения, даже если выполнение задачи потока данных еще не запущено.

person Hadi    schedule 26.02.2019
comment
Изменение DelayValidation и ValidateExternalMetadata не помогает. Изменение свойства RetainSameConnection на true решает эту проблему. - person Srikar mogaliraju; 11.03.2019
comment
@Srikarmogaliraju тогда, как я уже говорил If it doesn't works then it means that the acquire connection method is called to lock the file for read even if the data flow task execution is not started yet. - person Hadi; 11.03.2019
comment
@Srikarmogaliraju нет других решений, я пытался объяснить вам, почему менеджер соединений Excel ведет себя так. И я думаю, что это одна из причин существования RetainSameConnectionproperty. Удачи - person Hadi; 11.03.2019
comment
Спасибо за ваше время @Hadi. будет обновляться, если я узнаю больше об этом. - person Srikar mogaliraju; 11.03.2019