求助:迁移VB.NET 2010+Access 13系统后遇ACE.OLEDB.12.0未注册错误
解决“Microsoft.ACE.OLEDB.12.0 provider is not registered in the local machine”问题的排查步骤
检查Access数据库引擎的位数匹配
VB.net 2010项目编译位数、Access数据库引擎位数、O365位数必须完全一致:- 若O365是32位(打开Word→文件→账户→关于Word可查看),必须安装32位Access数据库引擎,且项目编译为32位;
- 若O365是64位,安装64位引擎,项目编译为64位;
- 禁止同时安装32位和64位引擎,会导致组件冲突无法注册。
修改项目编译配置
打开VB.net 2010项目:- 右键项目→属性→编译;
- 点击“高级编译选项”;
- 将“目标CPU”设置为与引擎、O365一致的位数(如x86对应32位,x64对应64位),避免默认Any CPU模式下的位数不兼容。
手动注册ACE驱动(管理员权限)
找到Access引擎的安装路径,以管理员身份运行CMD执行注册命令:- 32位引擎路径:
C:\Program Files (x86)\Microsoft Office\Office14\ACEOLEDB.DLL,执行:regsvr32 "C:\Program Files (x86)\Microsoft Office\Office14\ACEOLEDB.DLL" - 64位引擎路径:
C:\Program Files\Microsoft Office\Office14\ACEOLEDB.DLL,执行:regsvr32 "C:\Program Files\Microsoft Office\Office14\ACEOLEDB.DLL"
若提示注册失败,检查路径是否正确,或重新下载对应位数的引擎安装包重新安装。
- 32位引擎路径:
利用O365自带的ACE组件
单独安装的Access引擎可能与O365自带组件冲突:- 卸载已安装的Access数据库引擎;
- 打开控制面板→程序和功能→找到O365→点击“更改”→选择“快速修复”或“联机修复”;
- 修复完成后,O365会自动注册对应位数的ACE驱动,无需额外安装。
调整连接字符串的Provider版本
O365环境下默认使用ACE 16.0组件,可尝试将连接字符串中的Microsoft.ACE.OLEDB.12.0替换为Microsoft.ACE.OLEDB.16.0,新版本驱动向下兼容旧版数据库文件,能避免版本不匹配问题。
内容的提问来源于stack exchange,提问作者user3778844
相关产品推荐
相关产品推荐

