VS 2017 SSIS ForEach L oop работает с .xls, но НЕ .xlsx - PullRequest
0 голосов
/ 07 февраля 2020

Фон

Я недавно обновился до Visual Studio 2017 в бизнес-среде и пытаюсь создать пакет, который будет получать серию файлов Excel из сетевого каталога и импортируйте данные из данной вкладки в существующую таблицу SQL Server. Я делал это много раз с предыдущими версиями VS, но это не работает должным образом, особенно при использовании файлов .xlsx; ОДНАКО, если я вместо этого изменю файлы на файлы .xls, l oop будет работать как положено.

Issue

Если я использую расширение файла .xls (и задайте все файлы, пути, переменные и т. д. c ..., чтобы отразить это), l oop соберет данные из данной вкладки для каждого файла в каталоге, импортирует и успешно завершит / завершит работу. Если вместо этого используется .xlsx (и я задаю все файлы, пути, переменные и т. Д. c ..., чтобы отразить это), l oop подберет каждый файл в каталоге, импортирует, И ТОГДА выдаст следующую ошибку (и не завершено успешно):

Ошибка : [Источник Excel 1 ] Ошибка: Код ошибки SSIS DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. Ошибка вызова метода AcquireConnection для диспетчера соединений «Диспетчер соединений Excel 1» с кодом ошибки 0xC0202009. До этого могут быть сообщения об ошибках с дополнительной информацией о том, почему произошел сбой вызова метода Acquire Connection.

Ниже приведены мои настройки / шаги по решению проблемы .xlsx. Я ничего не изменил между этим и успехом .xls, за исключением соответствующих элементов, таких как версия Excel (в диспетчере соединений), переменные VAR_L oop и VAR_File и, конечно же, сами файлы:

Поток данных

  • Свойство DelayValidation имеет значение TRUE
  • Ничего особенного; Базовый c поток данных (файл Excel в SQL БД сервера):

Data Flow

Переменные:

  • VAR_File: содержит имя файла, которое будет использоваться в выражении диспетчера подключений
  • VAR_Path: содержит путь к каталогу, в котором находятся файлы. Имеет символ «\» в конце пути
  • VAR_L oop: установлен на * .xlsx (для использования в контейнере ForEach L oop)

Variables

Диспетчер соединений Excel

  • Версия Excel установлена ​​в Microsoft Excel 2007-2010
  • Свойство DelayValidation имеет значение TRUE
  • В выражении ExcelFilePath установлено следующее:

Connection Manager

enter image description here

ForEach L oop Контейнер

  • Свойство DelayValidation имеет значение TRUE
  • Задача потока данных находится внутри контейнера цикла ForEach. Никакие другие объекты не находятся внутри контейнера
  • Отображение переменных, как показано ниже:

Container Expressions

Container Variable

Я также попытался установить для свойств конфигурации в разделе «Отладка» (для проекта) значение Run64BitRuntime как FALSE. Я также попытался установить для этого параметра значение ИСТИНА - ни один из них, похоже, ничего не меняет.

Кроме того, добавление точек останова, чтобы попытаться определить причину root, похоже, не работает - если я добавлю Точки останова в местах, которые должны сработать, например, до или после выполнения, все точки останова пропускаются - как если бы они даже не существовали (это совершенно другая проблема, которую мне также нужно решить)!

Любая помощь очень ценится!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...