В преобразовании SSIS ETL я пытаюсь загрузить определенный файл .xls. У меня есть несколько одинаковых файлов с похожими схемами, и все они работают корректно. Однако этот файл выдает ошибку «Внешняя таблица не соответствует ожидаемому формату». Это то, что я пробовал:
- Я уже изменил строку подключения с Jet OLEDB на ACE OLEDB, безрезультатно.
- Менял тип подключения с Excel 97-2003 на 2007, результата нет.
- Диспетчер соединений использует переменную, поэтому я попытался создать другой диспетчер соединений, который напрямую загружает файл. Безрезультатно.
- Я использую SQL-запрос для чтения из файла, поэтому я попытался прочитать листы, которые есть в файле. Они не загружаются.
- Я попробовал "Сохранить как..." и использовал Excel 97-2003.
- Я попытался пересохранить файл.
- Пробовал восстановить исходный файл.
- Я проверил листы, которые есть в файле, и сравнил их с аналогичным, который загружается. По крайней мере, у обоих одинаковые листы.
Что еще более странно, так это то, что файл загружается правильно, если я оставляю его открытым в Excel, пока он загружается в SSIS. В качестве дополнительной информации:
- В файле есть макросы, как и в остальных файлах.
- Мой компьютер работает на 32-битной архитектуре.
- Я использую Visual Studio 2010 + SQL Server 2012.
Что еще может вызвать эту ошибку?
РЕДАКТИРОВАТЬ: Теперь я попытался настроить источник ADO.NET и источник OLEDB для открытия файла .xls. ADO.NET не может «извлекать информацию из столбцов», а OLEDB закрывает соединение. Может быть, есть способ узнать, когда чтение файла excel не удается?
Я также попробовал кое-что очень хитрое: я проверил средство просмотра событий и заметил несколько ошибок, поэтому я быстро поискал в Google и исправил их. Он был связан с SSIS, но его исправление не устранило ошибку.