Диспетчер соединений генерирует исключение при загрузке файла .xlsb с использованием служб SSIS

У меня есть один файл .XLSB (двоичный лист MS excel, созданный с помощью Office 2016), содержащий более миллиона записей. Как я могу загрузить это с помощью SSIS? У меня есть как SQL Server 2014, так и SSDT 2012 и SQL Server 2017 SSDT 2017 на двух разных ПК.

Проблема в том, что в SSIS я использую источник excel, диспетчер соединений как excel, имя листа excel не отображается. Говорят, ни одна таблица или представление не могут быть загружены. Однако в моем Excel есть лист.

Не удалось получить табличную информацию для диспетчера подключений «Диспетчер подключений Excel». Не удалось подключиться к источнику с помощью диспетчера подключений "Диспетчер подключений Excel"

ИЗМЕНИТЬ дополнительную информацию об ошибке

введите здесь описание изображения

Согласно этому: Доступ к двоичному файлу Excel 2007 (.xlsb) через OleDb ACE установил движок доступа (2016). Но проблема все еще есть.

В чем может быть проблема ? Любая ссылка поможет? Спасибо.


person AskMe    schedule 09.07.2019    source источник


Ответы (2)


Установите 32-разрядный поставщик Microsoft.ACE.OLEDB.12.0. Затем перейдите в свойство проекта -> Свойства конфигурации -> Отладка -> установите Run64BitRuntime = False.

введите здесь описание изображения

Щелкните изображение, чтобы просмотреть подробные сведения о свойстве подключения и расширении файла  введите описание изображения здесь

person Khairul Alam    schedule 09.07.2019
comment
Говоря, вы не можете установить 32, но у MS Access DB Engine в настоящее время есть 64-битный офисный продукт. Любая другая подсказка. Обратите внимание, что все создается с использованием 64-разрядной версии, тогда почему необходимо вернуться к 32-разрядной версии? - person AskMe; 09.07.2019
comment
А пока измените свойство Run64BitRuntime и соберите проект. свойство проекта - ›свойства конфигурации -› Отладка - ›установить Run64BitRuntime = False. если он не работает, то в любом случае следует установить 32-битную версию. - person Khairul Alam; 09.07.2019
comment
Я делал это раньше. Тем не менее, есть проблемы. Очень плохо, что Microsoft не беспокоится о таких мелких проблемах ... Еще какие-нибудь подсказки, пожалуйста? Для меня слишком сложно вернуться к 32-битной версии. Есть ли способ сохранить. xlsb файл повторно сохранить в 64-битном формате и попробовать ?? - person AskMe; 09.07.2019
comment
Проверьте строку подключения, для источника Excel этот формат работает для меня. Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\..\....xlsx;Extended Properties="EXCEL 12.0 Xml;IMEX=1;HDR=YES" - person Khairul Alam; 09.07.2019
comment
Обратите внимание, что мой файл имеет двоичный формат (например, XLSB). Имея такое же соединение, что и у вас ... Я думаю, что MS не подготовлена ​​к любому формату данных. Очень плохой. - person AskMe; 09.07.2019
comment
Я думаю, что 32-разрядная версия Microsoft.ACE.OLEDB.12.0 может решить эту проблему. Пожалуйста, проверьте второе изображение, которое я уже добавил. Я подключаю xlsb, и он работает в соответствии с ранее описанной конфигурацией. - person Khairul Alam; 10.07.2019
comment
Спасибо. В таком случае, по какой ссылке MS вы это получили? Я хотел бы загрузить это только по ссылке Microsoft. - person AskMe; 10.07.2019
comment
@AskMe Имейте в виду, что удаление 64-разрядной версии и установка 32-разрядной версии может привести к тому, что другие приложения перестанут работать, если бы они полагались на нее. Почему бы не установить в пассивном режиме? - person Yahfoufi; 10.07.2019
comment
Да, лучше сначала попробовать пассивный режим. - person Khairul Alam; 10.07.2019

Исходя из вашего вопроса, у вас есть две проблемы:

  1. Ядро СУБД Access не зарегистрировано, ошибка
  2. Чтение формата файла Xlsb с помощью SSIS

Ядро СУБД Access не зарегистрировано ошибка

Вы можете обратиться к следующим ссылкам для получения дополнительной информации о том, как решить подобную проблему:

Чтение формата файла Xlsb с помощью SSIS

Сначала необходимо выбрать обычный файл Excel в диспетчере соединений Excel (создать его вручную), а затем в свойстве ExcelFilePath изменить его на путь .xlsb;

Альтернативы

  1. Использование Interop librairies для чтения из Excel:

  2. Использование сторонних библиотек для чтения из Excel:

  3. Используя библиотеки OpenXml:

  4. Преобразовать в файл csv

person Hadi    schedule 09.07.2019
comment
Спасибо, Хади. Моя проблема в том, что я не могу редактировать реестр, потому что у меня нет на это разрешения, и никто из ИТ-отдела не будет делать это за меня, поскольку считает это рискованным. Есть ли альтернативные пути? Как вы думаете, удаление 64-битной и переустановка 32-битной первой, а затем может быть 64-битной, будет работать? Есть ли способы использовать задачу сценариев или любую другую задачу для чтения файла .xlsb и вставки данных в БД? В любом случае я собираюсь попробовать детали, которые вы предоставили, и пометить как ответ в соответствии с этим. Пожалуйста, дайте мне знать, если у вас есть какие-либо другие подсказки. Спасибо еще раз. - person AskMe; 10.07.2019
comment
@AskMe я добавил несколько альтернатив - person Hadi; 10.07.2019
comment
@AskMe убедитесь, что удаление 64-битной версии не повлияет на другие приложения. В противном случае я думаю, что это сработает - person Hadi; 10.07.2019