【发布时间】:2011-10-02 14:32:55
【问题描述】:
有没有办法在 SSIS 中使用 Microsoft.Jet.OLEDB.4.0 驱动程序访问 FlatFiles?
通过 FlatFile 源的访问要好得多,这只是关于是否存在使用 Jet 驱动程序的方法。
【问题讨论】:
有没有办法在 SSIS 中使用 Microsoft.Jet.OLEDB.4.0 驱动程序访问 FlatFiles?
通过 FlatFile 源的访问要好得多,这只是关于是否存在使用 Jet 驱动程序的方法。
【问题讨论】:
这似乎是一个有趣的问题,所以我稍微琢磨了一下。是的,您绝对可以使用 JET 驱动程序来读取平面文件。 HOW TO: Use Jet OLE DB Provider 4.0 to Connect to ISAM Databases 见打开文本部分
默认情况下,它希望文件为 CSV,但您可以在 Schema.INI 中指定格式,该格式与连接管理器指向的文件夹位于同一文件夹中。
关于 CM 需要注意的一点,它指向文本文件的文件夹,而不是特定文件。
当您创建连接管理器时,您需要进入全部选项卡(在选择本机 OLE DB\Microsoft Jet 4.0 OLE DB 提供程序之后),然后添加扩展属性。我能够使其与 CSVDelimited 和仅 Delimited 的 FMT 一起工作(因为我的示例文件是 csv)。
在源文件中用逗号交换制表符并将 FMT 设置为 TabDelimited 似乎在连接管理器属性中不起作用,但我没有尝试按照 BOL 文章中的说明创建 schema.ini 文件。
您不能通过 连接字符串。例如,如果你想打开一个固定宽度的 文件,或者您想使用逗号以外的分隔符,您必须 在 Schema.INI 文件中指定所有这些设置。
我的 CM 上 ConnectionString 的完整值如下
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
【讨论】: