SSIS FlatFile Доступ через Jet - PullRequest
       14

SSIS FlatFile Доступ через Jet

3 голосов
/ 02 октября 2011

Есть ли способ получить доступ к FlatFiles с помощью драйвера Microsoft.Jet.OLEDB.4.0 в SSIS?

Доступ через источник FlatFile намного лучше, он есть, если есть способсделать это с помощью драйвера Jet.

1 Ответ

3 голосов
/ 02 октября 2011

Это казалось интересным вопросом, поэтому я немного повозился с ним. Да, вы можете использовать драйвер JET для чтения плоского файла. КАК: Использовать Jet OLE DB Provider 4.0 для подключения к базам данных ISAM См. Раздел «Открытый текст»

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

Одна вещь, которую следует отметить о CM, она указывает на папку с текстовыми файлами, а не на конкретный файл.

При создании диспетчера подключений необходимо перейти на вкладку «Все» (после выбора «Собственный поставщик OLE DB \ Microsoft Jet 4.0 OLE DB»), а затем добавить расширенные свойства. Я смог заставить его работать с FMT CSVDelimited и просто Delimited (так как мой файл образца был CSV).

enter image description here

Замена запятых для вкладок в исходном файле и установка FMT в TabDelimited, по-видимому, не работают в свойстве диспетчера подключений, но я не пытался создать файл schema.ini, как указано в статье BOL.

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

Полное значение ConnectionString на моем CM ниже

Data Source=C:\tmp\so\;Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="text;HDR=Yes;FMT=CSVDelimited;";

Если пакет работает нормально во время разработки, но после запуска работает с перебоями, драйвер JET доступен только как 32-битный, так что на 64-битной машине, как указано в сообщении об ошибке.

Код ошибки SSIS DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. Вызов метода AcquireConnection для диспетчера соединений Ошибка "OLEDB_JET" с кодом ошибки 0xC0209303. Там может быть ошибка сообщения, опубликованные до этого, с дополнительной информацией о том, почему Ошибка вызова метода AcquireConnection.

Решение этой проблемы - запустить его из командной строки в 32-битном режиме, например

C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn>.\dtexec /file C:\sandbox\SSISHackAndSlash\SSISHackAndSlash\so_JetFlatFile.dtsx
...