SSIS包部署至SSMS后运行报错:请求的OLE DB提供程序Microsoft.ACE.OLEDB.12.0未注册
我之前帮不少用户解决过这类64位系统搭配32位Office/SSIS环境的驱动冲突问题,你可以按以下步骤逐一排查:
彻底清理并重新安装32位ACE驱动
直接双击安装32位AccessDatabaseEngine.exe时,系统会因为检测到已安装的32位Office而阻止安装,这是很多人踩坑的点。你需要先卸载所有已安装的ACE驱动(包括32位和64位),然后打开32位命令提示符(路径:C:\Windows\SysWOW64\cmd.exe),切换到驱动安装包所在目录,执行以下命令静默安装:AccessDatabaseEngine.exe /passive这个参数会跳过Office版本检测,强制完成32位驱动的安装。
确认SSIS目录的全局32位运行时设置
只修改单个包的运行模式可能不够,SSIS目录的全局设置会覆盖包的局部配置:- 在SSMS中连接到Integration Services实例
- 右键点击你的SSIS目录(通常是
SSISDB),选择属性 - 在常规选项卡中,找到“32位运行时”选项,设置为
True - 点击确定保存设置
检查SQL Server代理作业的运行时配置(如果通过代理执行)
如果你是通过SQL Server代理作业来运行包,需要单独配置作业步骤:- 打开对应的代理作业,进入作业步骤编辑界面
- 切换到执行选项选项卡
- 勾选“使用32位运行时”选项,保存修改
验证32位ACE驱动是否正确注册
打开32位命令提示符,执行以下命令注册驱动(注意路径需根据你的Office版本调整,OFFICE16对应Office 2016/365,OFFICE15对应2013):regsvr32 "C:\Program Files (x86)\Microsoft Office\root\vfs\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\ACEOLEDB.DLL"如果弹出“DllRegisterServer在ACEOLEDB.DLL succeeded”提示,说明注册成功。
确认部署前Visual Studio的项目设置
部署包前,先在Visual Studio中检查项目配置:- 右键点击SSIS项目,选择属性
- 切换到调试选项卡
- 将“运行64位运行时”设置为
False - 重新部署包到SSMS
这些步骤覆盖了绝大多数64位系统下32位SSIS环境的驱动问题,你可以按顺序尝试,应该能解决你的报错。
内容的提问来源于stack exchange,提问作者Lucy

