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。

该提供程序是否有不同的“版本” - 或者我错过了什么?

我已经在 Windows 8 下重新编译了一个使用 x86 平台的测试程序,并将提供程序更改为 Microsoft.Jet.OLEDB.4.0 并且一切正常。不幸的是,该模块是一个更大的生态系统的一部分,需要能够在 x64 下运行(特别是 excel 的插件),并且访问数据库是由套件通过应用程序从供应商的网站下载的,所以它是将数据库转换或将所有内容更改为 x86 是不切实际的。

提前致谢。

4

6 回答 6

15

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

(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 并且应用程序的行为符合预期。

MS 包含一个标为 12.0 的提供程序,它的行为不再像 12.0,这似乎很奇怪。

无论如何-希望能帮助拉头发 4-5 小时的人...

克雷格

于 2013-01-28T13:41:21.163 回答
5

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

于 2014-06-10T18:13:39.050 回答
4

只是为了澄清OP描述的行为:

对于 Office 2013 (ACE 15.0),Microsoft 取消了对使用 Jet 3.x 及更早版本(即 Access 97 及更早版本)创建的 mdb-Files 的支持。因此,我强烈假设导致问题的 OP 数据库是 Access97-DB。Jet 4.0 数据库(Access 2000,还有 .mdb)仍然受支持,不会产生任何错误。

Office 2013 还将其较新的驱动程序注册为早期版本的事实是 MS 故意尝试保持许多程序和脚本正常工作,这些程序和脚本内置了一个硬编码的提供程序名称。正如您在升级时所认识到的那样,这只会使许多程序和脚本正常工作, 不是所有的...

于 2014-05-23T08:12:11.843 回答
4

我使用的是Windows 8.1 64 位和 Microsoft Office 2013 我安装了“Microsoft Access Database Engine 2010 Redistributable”,但没有任何改变,但出现了同样的错误!安装“2007 Office System 驱动程序:数据连接组件”解决了该问题。

我通过这个链接找到了这个解决方案。

尝试连接到 Visual Studio 中的 Access 数据库但不断收到此错误?

尝试先安装这个:http: //www.microsoft.com/download/en/details.aspx?id=13255

但是,如果像我一样,这对您不起作用,请尝试以下方法:

注意:这确实适用于 Office 2010,即使它适用于 2007 Office,不要问我为什么会这样 :)

  1. 下载并安装:http ://www.microsoft.com/download/en/confirmation.aspx?id=23734

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

于 2014-06-04T14:15:09.747 回答
1

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

于 2013-08-12T12:37:53.853 回答
1
  1. 安装 Microsoft Access 数据库引擎 2010 Redistributable x 64( http://www.microsoft.com/en-us/download/details.aspx?id=13255 )
  2. 将您的数据库转换为新格式 (.mdb -> .accdb)
  3. 在整个项目中搜索“Microsoft.Jet.OleDb.4.0”并将其替换为 Microsoft.ACE.OLEDB.12.0
于 2015-04-16T22:34:54.040 回答