我有一个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不切实际。
提前致谢。
答案 0 :(得分:16)
我想到检查每个提供程序使用的文件版本,并通过注册表查找,发现在干净的Windows 8安装下,安装了Office 2013,两个提供程序都指向同一个程序集。
(C:\ Program Files \ Common Files \ microsoft shared \ OFFICE15 \ ACEOLEDB.DLL)
然后我下载并运行了Microsoft Access数据库引擎可再发行组件(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小时拔毛的人...
克雷格
答案 1 :(得分:5)
安装旧的ACE可再发行组件的问题是,下次在Office 2013中运行Access时,Office将“修复”自身并将版本12的指针切换回Office15目录。
答案 2 :(得分:4)
我使用 Windows 8.1 64位和Microsoft Office 2013 我已安装" Microsoft Access数据库引擎2010可再发行组件" 但没有任何更改,但得到了相同的错误但是! 安装" 2007 Office System驱动程序:数据连接组件" 解决了问题。
我通过link找到了这个解决方案。
尝试连接到Visual Studio中的Access数据库但保留 得到这个错误?
首先尝试安装: http://www.microsoft.com/download/en/details.aspx?id=13255
但是,如果像我一样对你不起作用,请尝试以下方法 方法:
注意:即使是2007年,这也适用于Office 2010 办公室,不要问我为什么这样做:)。
下载并安装:http://www.microsoft.com/download/en/confirmation.aspx?id=23734
- 醇>
在VS中单击添加数据源,按照向导进行操作即可享受! :)
答案 3 :(得分:3)
只是为了澄清OP描述的行为:
使用Office 2013(ACE 15.0),Microsoft取消了对使用Jet 3.x及之前(即Access 97及更早版本)创建的mdb文件的支持。因此,我强烈认为导致问题的OP数据库是Access97-DB。仍支持Jet 4.0数据库(Access 2000,aslo .mdb),不会产生任何错误。
Office 2013还将其较新的驱动程序注册为早期版本的事实是MS故意尝试使许多程序和脚本工作,内置硬编码的提供程序名称。正如您在升级时认识到的那样,这只是保持许多工作,而不是所有 ......
答案 4 :(得分:1)
此外,32位版本的Redistributable似乎适用于64位Windows操作系统上的Office 2013_64位,而64位版本的Redistributable不适用于我的情况
答案 5 :(得分:1)