【问题标题】:SSIS FlatFile Access via Jet通过 Jet 访问 SSIS 平面文件
【发布时间】:2011-10-02 14:32:55
【问题描述】:

有没有办法在 SSIS 中使用 Microsoft.Jet.OLEDB.4.0 驱动程序访问 FlatFiles?

通过 FlatFile 源的访问要好得多,这只是关于是否存在使用 Jet 驱动程序的方法。

【问题讨论】:

    标签: ssis jet flat-file


    【解决方案1】:

    这似乎是一个有趣的问题,所以我稍微琢磨了一下。是的,您绝对可以使用 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
    

    【讨论】:

    • 嗨,我试过了,它有效。只是一个快速的后续问题:我使用了 OleDB 数据源,测试连接成功。之后,我添加了一个 OleDB 源,使用我定义的 OleDB 数据源到我的平面文件,然后点击预览 => 错误。我太不喜欢 CSV
    猜你喜欢
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    相关资源
    最近更新 更多