SSIS加载XLSX/XLSB格式Excel出现Microsoft.ACE.OLEDB.16.0未注册报错如何解决
报错原因
- SSIS包运行位数与已安装的Microsoft Access Database Engine(ACE驱动)位数不匹配:例如安装了32位ACE驱动,但SSIS包设置为64位运行,反之亦然,这是该报错最常见的触发原因。
- 系统中未安装任何版本的Microsoft.ACE.OLEDB.16.0驱动,32位、64位版本均缺失。
- 若在SQL Server代理作业中运行包,SQL Server代理服务的运行账号无驱动注册表项的读取权限,或无Excel文件所在路径的访问权限。
- 小概率场景下连接字符串的扩展属性与文件格式不匹配也可能触发该类错误,比如导入xlsb格式时仍使用xlsx对应的扩展属性配置。
可行解决方案
方案1:对齐SSIS运行位数与ACE驱动位数
- 若在Visual Studio(SSDT)中调试包,右键SSIS项目→选择「属性」→进入「调试」页,调整
Run64BitRuntime配置:安装了32位ACE驱动则设为False,安装了64位ACE驱动则设为True。 - 若需要同时安装32位和64位ACE驱动,安装时需添加
/quiet参数绕过同产品不同位数的安装限制:下载对应安装包后,在命令行执行AccessDatabaseEngine.exe /quiet安装32位版本,执行AccessDatabaseEngine_64.exe /quiet安装64位版本。
方案2:调整连接字符串适配文件格式
你当前使用的xlsx格式连接字符串配置正确,若后续导入xlsb格式,需修改扩展属性参数,参考连接字符串如下:
Provider=Microsoft.ACE.OLEDB.16.0;Data Source=\\MyServer\MyFilePath\sample.xlsb;Extended Properties="Excel 12.0 Binary;HDR=YES";
方案3:校验运行权限
若包部署到SQL Server后运行报错,需确认两点:
- SQL Server代理服务的运行账号拥有Excel文件所在网络路径
\\MyServer\MyFilePath\的读写权限 - 服务账号拥有ACE驱动对应注册表项的读取权限
方案4:无驱动依赖替代方案
如果服务器环境不允许安装ACE驱动,可以选择两种绕开方案:
- 新增脚本任务,调用EPPlus、NPOI等.NET类库读取Excel文件内容,无需依赖系统安装的Office驱动,同时支持xlsx、xlsb等多种格式
- 提前将Excel文件转换为CSV格式,使用平面文件源组件导入,完全绕开Excel驱动的相关问题
内容的提问来源于stack exchange,提问作者Reni
相关产品推荐
相关产品推荐

