neo*_*neo 184 .net c# oledb jet 32bit-64bit
我在32位Windows 2008服务器中创建了一个在.NET 3.5中开发的Windows应用程序.在64位服务器中部署应用程序时,它显示错误"Microsoft.Jet.OLEDB.4.0'提供程序未在本地计算机上注册".
因此,作为此问题的解决方案,我已将项目的构建属性更改为X86,以便它将以32位模式构建,并在32位机器中重建项目.但是,同一个项目使用其他数据库驱动程序(DB2,SQL等)连接到其他数据库.因此,当我在64位操作系统中再次部署我的应用程序时,它会抛出异常"尝试在32位平台上加载64位程序集".
我使用Microsoft.Jet.OLEDB.4.0驱动程序读取和写入Excel(.xls)
neo*_*neo 232
我找到了解决这个问题的方法.我在问题中描述的问题基本上是由于64位操作系统中的Microsoft.Jet.OLEDB.4.0驱动程序不兼容.
因此,如果我们在64位服务器中使用Microsoft.Jet.OLEDB.4.0驱动程序,我们必须强制我们的应用程序以32位模式构建(这是我在广泛搜索此已知问题时找到的答案)这会导致我的代码的其他部分中断.
幸运的是,现在微软已经发布了64位兼容的2010 Office System Driver,可以替代传统的Microsoft.Jet.OLEDB.4.0驱动程序.它适用于32位和64位服务器.我已经将它用于Excel文件操作,它在这两种环境中都适用于我.但是这个驱动程序是在BETA中.
您可以从Microsoft Access数据库引擎2010可再发行组件下载此驱动程序
Jas*_*ker 112
如果问题在ASP.NET中仍然存在,那么我所要做的就是在应用程序池的高级设置中将"启用32位应用程序"设置更改为True.
Iqb*_*bal 49
我也有同样的问题
Microsoft.Jet.OLEDB.4.0'提供程序未在本地计算机上注册
我通过neo应用了答案但是在我将连接字符串中的提供程序更改为"Provider = Microsoft.ACE.OLEDB.12.0;"之后它才起作用.
如果有人面临同样的问题,希望这会有所帮助.
Rom*_*ain 27
我知道这是很老的问题而且很多人都回答了.但我总结了理解的事情:
如果文件扩展名为xls且OS为32位,则只能使用" Microsoft.Jet.OLEDB.4.0".微软尚未发布此驱动程序的64位版本.
如果文件扩展名是xlsx或OS是64位,则必须使用" Microsoft.ACE.OLEDB.12.0".以32/64位模式编译的应用程序不会影响驱动程序的选择.
始终安装Microsoft.ACE.OLEDB.12.0OS 64位的64位驱动程序.如果您已经安装了Office 32位,则需要使用/ passive参数从cmd运行驱动程序.此hack仅适用于Office 2013,Microsoft已从Office 2016 for Microsoft.ACE.OLEDB.16.0驱动程序停止此解决方法.
AccessDatabaseEngine_x64.exe /passive
Run Code Online (Sandbox Code Playgroud)
下载驱动程序Microsoft.ACE.OLEDB.12.0
private void ProcessFile(string path)
{
string connString = string.Empty;
if (Path.GetExtension(path).ToLower().Trim() == ".xls" && Environment.Is64BitOperatingSystem == false)
connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
else
connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
}
Run Code Online (Sandbox Code Playgroud)
如果使用AnyCPU标志编译Application,它将在64位OS上查找64位Access驱动程序,在32位OS上查找32位访问驱动程序.
小智 19
我有同样的消息,我在visual studio 2010上有一个网页,我在那个页面上读了一个file.xls,在我的项目中可视化没有任何问题,当我把它放在我的IIS本地时给我一个'微软.Jet.OLEDB.4.0'提供程序未在本地计算机上注册' ,我按照以下步骤修复了该问题,
1.- 打开IIS 2. - 在高级设置上更改appPool
3.-true以启用32位应用程序.
就这样
ps.I在Active Solution Platform上将Configuration Manager更改为X86
小智 5
我们在桌面应用中遇到了这个问题。
开发环境: Windows 7 Ultimate-64位.Net Framework 4.5 Provider = Microsoft.Jet.OLEDB.4.0
通过将平台目标从任何CPU更改为X86可以解决此问题。项目属性>>构建>>平台目标。