Microsoft.ACE.OLEDB.12.0提供程序在Windows 8下无法再打开.mdb文件。

12
我有一个x64应用程序,使用Microsoft.ACE.OLEDB.12.0提供程序在Windows 7 (x64)上读取MS Access数据库,这很好用(安装了Office 2010)。但在安装了Office 2013的Windows 8下运行相同的应用程序时,会出现一个错误消息,说提供程序无法打开以前的版本。虽然在安装了Office 2013的Windows 8中也有Microsoft.ACE.OLEDB.15.0,但我已经仔细检查了代码,并确信它在连接字符串中指定了12.0。这个提供程序有不同的“版本”吗?还是我错过了什么?我重新编译了一个在x86平台下使用的测试程序,在其中将提供程序更改为Microsoft.Jet.OLEDB.4.0,一切又恢复正常了。 不幸的是,该模块是一个需要能够在x64下运行的更大生态系统的一部分(特别是Excel插件),并且访问数据库由应用程序从供应商的网站下载,因此将数据库转换或将所有内容更改为x86并不实际。 我提前感谢您的帮助。
6个回答

15

我想检查每个提供程序使用的文件版本,并在注册表中搜索,发现在干净的Windows 8安装中,安装了Office 2013后,两个提供程序都指向同一个程序集。

(C:\ Program Files \ Common Files \ microsoft shared \ OFFICE15 \ ACEOLEDB.DLL)

然后我下载并运行了Microsoft Access Database Engine Redistributable( http://www.microsoft.com/en-us/download/details.aspx?id=13255),然后将正确的12.0提供程序版本安装到C:\ Program Files \ Common Files \ microsoft shared \ OFFICE14 \ ACEOLEDB.DLL,应用程序就按预期工作了。

微软似乎已经包括了一个被标记为12.0的提供程序,但不再像12.0一样工作,这似乎很奇怪。

无论如何-希望这对某人免去了4-5小时的烦恼...

Craig


这对我有用。相同的设置。Windows 8,64位,Office 2013。 - Papa Burgundy
@Craig D:您能否帮我看一下我的问题?虽然我无法像您那样解决它,但非常相似。也许您有什么想法。 - fishmong3r

5
安装旧版ACE可再发行程序的问题在于,下次在Office 2013运行Access时,Office将会“修复”自身并将版本12的指针切换回Office15目录。

2
欢迎来到SO。以后参考一下,你可以考虑把这个答案放在评论里面,这样当你获得更多的积分时,记住这一点,以避免被投票降低。 - Hristo Valkanov

4

澄清一下OP所描述的行为:

使用Office 2013(ACE 15.0)后,Microsoft取消了对使用Jet 3.x及之前版本(即Access 97及更早版本)创建的mdb文件的支持。因此,我强烈推测引起问题的OP数据库是Access97-DB。Jet 4.0数据库(Access 2000,也是.mdb)仍然受到支持,并且不会产生任何错误。

Office 2013还将其更新的驱动程序注册为早期版本,这是微软故意尝试让许多程序和脚本正常工作,这些程序和脚本内部硬编码了提供程序名称。正如您在升级时所发现的那样,这只能使许多工作正常,而不是全部...


4
我正在使用 Windows 8.1 64位 和 Microsoft Office 2013。 我安装了 "Microsoft Access Database Engine 2010 Redistributable",但没有改变任何东西,并且出现了相同的错误,但是! 安装 "2007 Office System Driver: Data Connectivity Components" 解决了问题。 我通过这个 链接 找到了这个解决方案。
尝试在Visual Studio中连接Access数据库,但一直出现此错误?请尝试先安装http://www.microsoft.com/download/en/details.aspx?id=13255。然而,如果像我一样,这个方法不起作用,请尝试以下方法:注意:即使是2007 Office,这也适用于Office 2010,不要问我为什么,它就是有效的 :)
  1. 下载并安装http://www.microsoft.com/download/en/confirmation.aspx?id=23734

  2. 在VS中点击添加数据源,按照向导操作即可! :)


1
此外,似乎在64位Windows操作系统上,Redistributable的32位版本适用于Office 2013_64位版本,而64位版本的Redistributable在我的情况下不适用。

默认情况下,即使在64位机器上,Office 2013也会安装为32位。 - Rob Sedgwick

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接