在SSIS下做Excel导入数据的时候遇到下面的错误
[Excel Source [16]] Error: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The AcquireConnection method call to the connection manager "Excel Connection Manager" failed with error code 0xC0209303. There may be error messages posted before this with more information on why the AcquireConnection method call failed.
找到一篇别人的文章提到这个问题
http://www.cnblogs.com/biwork/p/3478778.html
需要到这个站点下载Microsoft Access Database Engine 2010 Redistributable
http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=13255
需要注意的点:
1) 建立Connection的时候不再是使用Excel Connection,而是选择Microsoft Office 12.0 Access Database Engine OLE DB Provider
2)因为类型转换原因,Excel中的字符串都是UNICODE的,如果目标表的字段数据类型是非unicode,那就需要在两者中间用一个Data Conversion的组件来把input的数据转成[string]
3) 在 SSIS 项目,右键属性来修改包的运行模式改成 False 让它在32位模式运行。因为我们的驱动是 32 位模式,但是这个包仍然是默认64位模式运行,因此在 64位运行环境下是无法检测到这种只支持32位链接的驱动的。
不过上面的连接中作者在2014年更新了文章,更新中提到安装完了 AccessDatabaseEngine 之后,我完全就可以直接使用 Excel Source 和 Excel Destination 就可以操作 Excel 数据的抽取和导出了!并且在 64 位下也是可以正常运行的,不需要调整成 32 位的模式。Office版本是Office 365。