有没有办法在SSIS中使用Microsoft.Jet.OLEDB.4.0驱动程序访问FlatFiles?
通过FlatFile Source进行访问要好得多,只是有一种方法可以使用Jet驱动程序。
答案 0 :(得分:3)
这似乎是一个有趣的问题,所以我对它进行了一些调整。是的,你绝对可以使用JET驱动程序来读取平面文件。 HOW TO: Use Jet OLE DB Provider 4.0 to Connect to ISAM Databases请参阅“打开文本”部分
默认情况下,它希望文件为CSV,但您可以在Schema.INI中指定格式,该格式与连接管理器指向的文件夹位于同一文件夹中。
有关CM的注意事项,它指向文本文件的文件夹,而不是特定文件。
创建Connection Manager时,需要进入“全部”选项卡(选择“本机OLE DB \ Microsoft Jet 4.0 OLE DB提供程序”后),然后添加“扩展属性”。我能够使用CSVDelimit的FMT并且只是Delimited(因为我的示例文件是csv)。
在源文件中交换选项卡的逗号并在TabDelimited中设置FMT似乎在连接管理器属性中不起作用,但我没有尝试按照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驱动程序只能在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