求助:SSIS连接Excel时32位与64位运行环境冲突问题解决方案
解决SSIS与SQL存储过程调用Excel时的32/64位驱动冲突问题
这个冲突问题其实很常见,不用纠结“不能同时装32位和64位驱动”的误区,下面几个方案都能帮你解决:
方案1:调整SSIS项目的运行位数(最简便)
你完全可以同时保留32位和64位驱动,只需要让SSIS在32位模式下运行,而SQL Server继续用64位:
- 打开你的SSIS项目,右键点击项目名称,选择属性
- 在属性窗口的调试选项卡里,找到
Run64BitRuntime这个设置,把它改成False - 这样SSIS设计和运行时都会调用32位驱动,而SQL Server(包括存储过程)默认用64位驱动运行,两者互不干扰
方案2:给SQL Server代理作业配置32位运行时(如果SP通过代理执行)
如果你的存储过程是通过SQL Server代理作业触发的,反而需要32位驱动的话,可以单独给作业设置:
- 打开SQL Server代理,找到对应的作业,右键选属性
- 切换到步骤选项卡,选中要修改的作业步骤,点击编辑
- 转到高级选项卡,勾选使用32位运行时(这个选项只有64位SQL Server才会显示)
- 这样作业会以32位模式运行,调用32位驱动,而SSIS项目如果需要64位,把
Run64BitRuntime设为True即可
方案3:正确共存32位和64位Excel驱动
很多人不知道,32位和64位的Microsoft Access Database Engine(Excel驱动的官方名称)是可以共存的,只是安装顺序和方式要注意:
- 先下载32位的安装包,用静默安装的方式运行:
AccessDatabaseEngine.exe /quiet - 再下载64位的安装包,同样用静默安装:
这样安装后,系统里会同时存在两个版本的驱动,SSIS和SQL Server会根据各自的运行位数自动调用对应的驱动AccessDatabaseEngine_X64.exe /quiet
额外注意点
- 确保驱动版本和你的Office版本匹配(比如Office 2019就用对应版本的Access Database Engine)
- Visual Studio的SSIS设计环境默认是32位的,所以设计阶段必须有32位驱动才能识别Excel文件
- 如果你的SQL Server是32位的,那存储过程只能用32位驱动,这时候SSIS也保持32位运行即可
内容的提问来源于stack exchange,提问作者Dhivakhar Venkatachalam
相关产品推荐
相关产品推荐

