我有一个简单的SSIS 2012包:
SourceFileExcel
FUNB
的Excel连接管理器,用于连接文件FUNB
连接管理器当尝试动态分配ConnectionString时,我收到错误:
[Excel Source [2]]错误:SSIS错误代码DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。对连接管理器“FUNB”的AcquireConnection方法调用失败,错误代码为0xC0209303。在此之前可能会发布错误消息,其中包含有关AcquireConnection方法调用失败原因的更多信息。
我尝试了以下内容:
手动加载文件后,请更新连接管理器属性。设置ConnectionString
表达式:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+@[User::SourceFileExcel]+";Extended Properties=\"EXCEL 8.0;HDR=Yes; IMEX=1\";"
上面会产生错误。将表达式更改为ExcelFilePath
设置为:
@[User::SourceFileExcel]
ExcelFilePath
和ConnectionString
表达式都会产生相同的错误。我在Excel连接管理器和数据流对象上都尝试了DelayValidation=True
。
我在同一台服务器上有另一个程序包,它的工作方式大致相同,但使用的是CSV连接。该包正常运行。两个源文件夹上的Windows安全权限都是相同的。
关于我做错的任何想法?
答案 0 :(得分:1)
我认为在连接到excel 2007或更高版本时应该使用Microsoft.ACE.OLEDB.12.0
作为提供程序,还要确保没有以64位模式运行程序包
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @[User::SourceFileExcel] + ";Extended Properties=\"Excel 12.0;HDR=YES\";"
或者尝试以下格式(不写Extended Properties
)
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @[User::SourceFileExcel] + ";Excel 12.0;HDR=YES;IMEX=1"
如果这些建议都不起作用,那么我认为这不是表达问题,而您正面临 the same issue in this link 。
问题可能是在计算机上找到了64位办公室安装,需要安装32-bit AccessDatabaseEngine