You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSIS 2012 Excel源动态ConnectionString配置报错求助

解决SSIS 2012动态Excel连接的DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER错误

针对你遇到的这个问题,我整理了几个常见排查方向和解决方案,咱们一步步来梳理:

1. 检查OLEDB驱动版本与运行模式的匹配性

你当前连接字符串用的是Microsoft.Jet.OLEDB.4.0,这是仅支持32位的旧驱动,而SSIS 2012默认会以64位模式运行。如果你的服务器是64位系统,就会出现找不到驱动的情况,直接导致连接失败。

解决方法:

  • 打开SSIS项目属性,在调试选项卡中,把Run64BitRuntime设置为False;
  • 若用SQL Server代理作业执行包,需指定使用32位的DTExec.exe(路径一般是C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\DTExec.exe)。

2. 修正连接字符串与Excel文件版本的匹配

你处理的是.xlsx文件,但连接字符串里用的是EXCEL 8.0(对应旧版.xls格式),这会导致驱动无法正确识别文件格式。应该改用支持.xlsx的ACE驱动和对应参数:

正确的连接字符串表达式如下:

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+@[User::SourceFileExcel]+";Extended Properties=\"Excel 12.0 Xml;HDR=Yes;IMEX=1\";"

注意:如果服务器未安装ACE驱动,需先安装Microsoft Access Database Engine 2010 Redistributable(对应SSIS 2012版本),确保驱动版本和运行模式(32/64位)一致。

3. 验证变量SourceFileExcel的正确性

先排除脚本任务获取路径的问题:

  • 在脚本任务里添加一段代码,弹出变量值(比如MessageBox.Show(Dts.Variables["User::SourceFileExcel"].Value.ToString());),确认路径完整且正确,没有空格遗漏、特殊字符或文件不存在的情况;
  • 或者直接手动给SourceFileExcel变量赋值一个已知存在的.xlsx文件路径,运行包看是否还会报错。

4. 优化Excel连接管理器的表达式配置

如果你选择设置ExcelFilePath的表达式,要注意:

  • 不要同时给ConnectionString和ExcelFilePath都设置表达式,这会导致冲突,保留其中一个即可(推荐设置ExcelFilePath,让SSIS自动生成正确的ConnectionString);
  • 确保Excel源组件本身的DelayValidation属性也设置为True,只设置连接管理器和数据流任务可能不够。

5. 排查文件权限的隐性问题

虽然你说权限和CSV包一致,但Excel文件有特殊要求:

  • 确认目标.xlsx文件没有被其他进程锁定(比如有人用Excel打开着);
  • 执行SSIS包的账户(比如SQL Server代理账户)需要对文件所在文件夹有读取+写入权限——ACE驱动在读取Excel时会生成临时文件,需要写入权限。

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:29:58