提供程序Microsoft.ACE.OLEDB.12.0在64位模式下运行时未注册,但Access 64bit存在

时间:2016-12-01 12:57:32

标签: vb.net ms-access oledb 32bit-64bit

我的计算机同时安装了64位Office和Access 2016以及32位Access 2010 Redistributable。

我的VB.NET程序使用OleDb类来读取和写入存储在.accdb文件中的数据。

如果我使用AnyCPU选项编译它,它将暂停并显示一个“Microsoft.ACE.OLEDB.12.0提供程序未注册”的异常,除非我设置了“prefer 32 bit”选项。

但是我的整个应用程序不会受益于64位处理,它将以32位(IntPtr.Size = 4

运行

为什么? .NET OleDb类不应该找到Access 2016 64bit附带的64位提供程序吗?

我会感谢任何帮助我理解这里发生的事情的人,并希望能指导我修复它。

1 个答案:

答案 0 :(得分:3)

您可能已安装了Office 2016的即点即用版本。According to Microsoft

  

Office的即点即用安装在本地操作系统上的隔离虚拟环境中运行。 [...]您必须从以下某个源安装Microsoft Access数据库引擎的MSI安装,以便调用应用程序可以找到[Microsoft.ACE.OLEDB.12.0 OLEDB提供程序]。

因此,您有以下选择:

  • 摆脱32位访问运行时并安装,例如,the 64-bit version of the Access 2013 Runtime

  • 坚持32位。没有受支持的方法在同一台计算机上的 32位和64位版本中安装Microsoft.ACE.OLEDB.12.0驱动程序。 (是的,它是愚蠢的)。可替代地,

  • 您可能希望切换到另一个数据库(例如SQL Sever Express或SQLite)。 Office产品和64位产品的结合往往会引起很多麻烦。

相关问题