问题描述

某次尝试连接Microsoft Access数据库时遇到连接失败错误,错误提示为“无法打开用应用程序较早版本创建的数据库”。该问题出现在使用ADO.NET或ODBC连接时,系统环境为Windows 11,Access数据库版本为2016。

原因

数据库为旧版.mdb格式,需替换连接字符串中的Provider为Microsoft.Jet.OLEDB.4.0。注意Jet引擎不支持64位应用。

检查是否启用了混合安全模式。在连接字符串中添加:

User Id=admin;Password=;

 排查步骤

常见的Access连接字符串格式如下:

Provider=Microsoft.ACE.OLEDB.16.0;Data Source=C:\path\to\database.accdb;

1.Microsoft.ACE.OLEDB.16.0替换为Microsoft.Jet.OLEDB.4.0尝试连接,报错The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine

2.尝试安装access 2003 ,在msdn中下载对应包后进行安装,需要激活码,百度激活码激活

3.激活后重启电脑,如仍不可以, 执行手动注册命令 

regsvr32 "C:\Windows\SysWOW64\msjetoledb40.dll"
regsvr32 "C:\Windows\SysWOW64\msjet40.dll"

4.重启电脑后使用x86模式即可正常使用 

最终解决方案

本例中问题源于未安装Jet驱动,目前官网也未提供。通过以下步骤解决:

  1. 下载并安装Access 2003
  2. 在连接字符串中明确指定Provider版本
  3. 切换应用程序为x86

修改后的有效连接字符串:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Data\database.accdb;

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐