首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >'Microsoft.ACE.OLEDB.12.0‘提供者没有注册-but,而是

'Microsoft.ACE.OLEDB.12.0‘提供者没有注册-but,而是
EN

Stack Overflow用户
提问于 2013-03-21 03:08:50
回答 2查看 14.1K关注 0票数 3

又短又甜:

  • 应用程序在x86机器上工作,但在x64上不起作用(在2008年服务器和Windows 8上试用)
  • Microsoft数据库引擎2010已经安装(还安装了Microsoft 2007 Access数据库引擎)
  • MS Office未安装
  • 确认C:\Program (X86)\通用文件\microsoft shared\OFFICE12\ACEOLEDB.DLL的存在

代码:

代码语言:javascript
复制
string conn = "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;";
OleDbConnection _connOle = new OleDbConnection(conn);

我该怎么做才能让这个应用程序在x64机器上工作呢?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-21 12:11:30

我可以想到两种情况可以解释你的问题:

  1. 您的C#项目设置为64位和32位平台,64位计算机只安装了Access数据库引擎的32位版本。引用失败,因为程序以64位的形式运行,但机器丢失了。 C:\Program \通用文件\Microsoft Shared\OFFICE14\ACEOLEDB.DLL
  2. 您的C#项目被设置为仅针对32位平台(x86),64位计算机只安装了Access数据库引擎的64位版本。引用失败,因为程序以32位的形式运行,但是机器丢失了。 C:\程序文件(X86)\公共文件\microsoft shared\OFFICE14\ACEOLEDB.DLL

请注意,Access数据库引擎的64位版本的安装程序只安装64位版本,而不是同时安装64位版本。

票数 3
EN

Stack Overflow用户

发布于 2017-11-10 14:28:51

虽然这个问题已经得到了回答,但在这个问题上花了很多时间之后,我要做些什么呢?

我使用Process来查找哪些注册表项。是HKEY_CLASSES_ROOT\Microsoft.ACE.OLEBD.12.0

在我的例子中,尽管程序和功能中列出了"Microsoft数据库引擎2010“,但这个键还是丢失了。

此外,ACEOLEDB.DLL文件已经存在于C:\Program Files\Common Files\Microsoft Shared\OFFICE14\中。

重新安装“2010再发行版”时没有指示任何错误就退出,但是Windows事件日志指出了一个问题,并且从安装日志文件来看,似乎存在某种版本不匹配(“该产品的另一个版本已经安装”)。

因此,我卸载了"Microsoft数据库引擎2010“从”程序和功能“,然后重新安装。现在装好了。

这导致添加注册表项HKEY_CLASSES_ROOT\Microsoft.ACE.OLEBD.12.0,并将我的ACEOLDBD.DLL副本替换为早期版本(14.0.7011.1000来自14.0.7159.5000)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15538774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档