cmd运行SSIS包报DTS_E_OLEDB_EXCEL_NOT_SUPPORTED错误求解决方案
报错根因
触发DTS_E_OLEDB_EXCEL_NOT_SUPPORTED错误的核心原因是当前cmd默认调用的是64位版本SSIS执行引擎,而传统Excel连接依赖的OLE DB提供程序默认仅提供32位版本,64位SSIS运行时无法加载对应驱动完成连接初始化。
可行解决方案
按改动成本从低到高排序,可根据实际场景选择:
- 方案1:直接调用32位版本的DTExec.exe执行包(优先推荐,无额外安装成本)
64位Windows系统会同时共存32位、64位两个版本的SSIS命令行执行工具DTExec.exe,只需要把cmd里的执行路径从64位版本替换为32位版本即可:
64位DTExec默认路径(当前报错调用的版本):C:\Program Files\Microsoft SQL Server\<对应SQL Server版本号>\DTS\Binn\DTExec.exe
32位DTExec默认路径:C:\Program Files (x86)\Microsoft SQL Server\<对应SQL Server版本号>\DTS\Binn\DTExec.exe
以SQL Server 2019(版本号对应150)为例,完整执行命令参考:"C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\DTExec.exe" /f "D:\SSIS_Projects\你的业务包名.dtsx"
注意:路径中包含空格时,必须用英文双引号分别包裹可执行文件路径、SSIS包文件路径,避免cmd参数解析错误。 - 方案2:安装64位ACE OLE DB驱动(适用于必须使用64位SSIS运行时的场景)
如果SSIS包内包含其他仅支持64位环境的组件,无法切换32位运行时,可以安装64位版本的Microsoft Access Database Engine可再发行组件,安装完成后64位SSIS即可直接识别Excel连接管理器。
安装提示:如果设备上已安装32位版本的Microsoft Office,直接运行64位驱动安装包会触发版本冲突报错,此时需要通过cmd执行安装包并追加/quiet参数完成静默安装,即可绕过版本校验。 - 方案3:修改SSIS包默认运行位宽配置
如果你在SQL Server数据工具(SSDT)中维护包源码,可以直接打开项目属性页,找到「调试」分类下的Run64BitRuntime选项,将值设置为False后重新保存部署包。后续无论通过cmd还是SQL Server代理作业调用包,都会默认以32位运行时启动,无需手动修改DTExec调用路径。
内容的提问来源于stack exchange,提问作者Nuwan Theekshana
相关产品推荐
相关产品推荐

