其实,这种错误的可能性有几种,比如:
1.没有安装数据访问组件,需要安装相应版本的数据访问组件;
2.没有安装相应版本的Office客户端,需要安装相应版本的Office客户端;
3.Microsoft.Jet.OLEDB.4.0在64位系统上不支持,需要修改架构,从x64改为x86,无论是WinForm还是ASP.NET;或者修改连接字符串为Microsoft.ACE.OLEDB.12.0并且安装AccessDatabaseEngine x64数据访问组件;
4.没有在IIS应用程序池配置默认属性,需要在相应的IIS应用程序池启用32位应用程序;
下面是我收集整理的一些解决方案。
【错误】:未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidOperationException: 未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序。
下载Microsoft 2007 Office System 驱动程序:数据连接组件安装
http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabaseEngine.exe
此下载将安装一组组件,非 Microsoft Office 应用程序可以使用它们从 2007 Office system 文件中读取数据,例如从 Microsoft Office Access 2007(mdb 和 accdb)文件以及 Microsoft Office Excel 2007(xls、xlsx 和 xlsb)文件中读取数据。这些组件还支持与 Microsoft Windows SharePoint Services 和文本文件建立连接。
此外,还会安装 ODBC 和 OLEDB 驱动程序,供应用程序开发人员在开发与 Office 文件格式连接的应用程序时使用。
支持的操作系统: Windows Server 2003 Service Pack 1, Windows Vista, Windows XP Service Pack 2
在windows 2008 r2 x64版本的操作系统中通过oledb提供程序连接访问Excel2007/2003时,程序会报如下错误:
System.InvalidOperationException: The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.
此查找资料认为产生此种错误的原因有两种:
1、在Windows2008r2 x64 OS,在没有装Office2007客户端时,或没有安装“数据连接组件”
2、当前Web应用程序的应用程序池是64位的Sharepoint应用程序池下时,因为提供连接Excel的provider不支持当前64版本的操作系统
解决方案:
方案1:
安装MS的数据连接组件AccessDatabaseEngine(或安装office 2007客户端),并将当前承载通过oledb提供程序去访问Excel2007的Web application对应的应用程序池“启用兼容32位应用程序”,
在对应的 IIS 应用程序池中,“设置应用程序池默认属性”右击/“高级设置”/"启用32位应用程序",设置为 true。
方案2:
安装AccessDatabaseEngine_64版并且要安装64位版的office 2010客户端
方案3:
若目标应用程序不能将应用程序池"启用兼容32位应用程序",只能在64位应用程序池下运行,且又想有上传Excel的功能,可按如下方式:
a、创建Asp.net WebService application 程序,并通过WebService来连接访问Excel。
b、将此webservice application的应用程序池按方案1方式设置“启用兼容32位应用程序”。
c、在目标应用程序中添加此webservice。
本文来自cnblogs:http://www.cnblogs.com/q149072205/archive/2012/03/29/2423323.html
今天我把系统换成了64位版的Windows7,结果配完IIS打开网站测试的时候,顿时菊花一紧:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。
查了半天发现是IIS跑在64位环境下引起的。而64位下,是木有Access数据库的驱动的(包括Excel也不行)。
解决办法是:在目标网站的应用程序池中选择高级设置,然后将启用32位应用程序设置为true,重启IIS即可!
本文来自汪东杰博客:http://www.wyjexplorer.cn/Post/2012/1/1/cannot-connect-to-access-database-under-windows7-x64