未在本地计算机上注册“ Microsoft.ACE.OLEDB.12.0”提供程序


442

我正在尝试在按钮单击事件中从Excel文件获取数据。我的连接字符串是:

 string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\source\\SiteCore65\\Individual-Data.xls;Extended Properties=Excel 8.0;";

当我单击按钮时,出现以下错误:

“ Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册。

我不知道如何解决这个问题。我的操作系统是Windows 7。


5
只是切切的评论:使用OLEDB读取Excel文件是一项古老的技术,非常慢,并且您已经发现,需要在目标计算机上手动安装额外的软件包。(当然,在2011年提出了这个问题。)而是使用ClosedXml(在NuGet上可用),它可以直接使用。
Shaul Behr

3
@ShaulBehr本来很好,但是ClosedXml仅适用于.xlsx文件,而不适用于.xls
Jimmy

2
如果要导入Sql Server,则可以从ssms运行此查询:execute master.dbo.xp_enum_oledb_providers它会告诉您它认为您拥有哪些提供程序。原来我同时拥有Microsoft.ACE.OLEDB.16.0和Microsoft.ACE.OLEDB.12.0,但是当我尝试导入数据时,对于两个Excel 16,我都得到了与OP相同的“未在本地计算机上注册”的信息。和Excel 2007文件格式(分别为oledb.16.0和oledb.12.0)。此时减少损失并放弃使用Microsoft软件是很有意义的。
user1040323

1
@ user1040323,execute master.dbo.xp_enum_oledb_providers告诉您服务器上的内容而不是本地计算机上的内容
弥敦道(Nathan Goings)

1
这里应该起作用; -它是:尚未真正记录在案,但是我确实找到了一种安装32位和64位版本的方法。只需将命令行参数“ / passive”添加到命令中:“ C:\ directory path \ AccessDatabaseEngine_x64.exe” / passive
TaW

Answers:


531

好,您需要安装它。您正在寻找:


44
我下载了这些组件,但它们对我不起作用,我必须从此处下载Microsoft Access Database Engine 2010可再发行组件:microsoft.com/en-in/download/details.aspx?id=13255我确定那是因为我正在使用MS Office2013。不过,感谢您为我指明了正确的方向。
Sizons 2015年

5
我必须在microsoft.com/en-us/download/confirmation.aspx?id=23734上安装Access数据库引擎和2007 Office System驱动程序:数据连接组件才能正常工作。
克里斯(Chris)

6
我的情况是,一切正常,然后突然开始出现此错误。那么可能是什么原因引起的呢?没有代码更改。
eetawil

21
就我而言,我必须从“任何CPU”切换到x64以匹配我的体系结构。
Rob Sedgwick

2
开膛手杰克指的是答案本身提供的解决方案,而不是评论。安装2007 Office System Driver: Data Connectivity Components立即解决了该问题。
Silkfire '16

155

可从以下位置获取64位版本的“ Microsoft Access数据库引擎2010可再发行组件”,它使您可以使用“ Microsoft.ACE.OLEDB.12.0”提供程序:http :
//www.microsoft.com/zh-cn/下载/details.aspx?id=13255

如果您使用接受的答案中的下载内容,则需要按照@ backtestbroker.com的说明为x86进行构建。


18
如果使用VS 2012,还请确保在项目的“属性” >>“生成” >>“常规”配置中未选中“首选32位”复选框。
devstruck 2014年

3
我使用的是VS 2008(不要问),直到我阅读了post_erasmus的技巧,并在我的应用程序的Properties >> Build >> General configuration中将'Platform Target'设置为x64,该解决方案才起作用。排序,谢谢!
2015年

1
此答案中的链接还允许您下载并安装32位版本。即使我具有64位Windows 7,Visual Studio 2013的IIS Express默认情况下也以32位模式运行,并且我已经以32位安装了一些Office 2013组件,因此我需要32位安装。
埃里克·巴尔

1
有了这个答案,我还必须将应用程序池上的“启用32位应用程序”设置为False。
iowatiger08年

1
这有助于解决我的问题。我的VS 2019应用程序使用Any CPU进行编译,生成x64库。我安装了32位版本的Office 2013,这使我无法安装x64 Access DB Engine。安装x64版本的Office之后,我便能够安装x64引擎,现在一切正常。DLL地狱继续存在。
Mike Lowery

74

取决于使用连接的应用程序(32/64位),您只需安装即可

摘要:

  • 从2007年到2016年的所有办公室都包含提供程序“ Microsoft.ACE.Oledb.12.0”
  • 根据您的应用程序体系结构,选择适当的运行时引擎(32/64)6
  • 从32位和64位Shell中使用powershell-command检查您的提供程序:

    (New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION 
  • 您将看到您的系统可以使用的提供商

长话多说:可以在http://live.sysinternals.com/strings.exe中找到字符串

例如。在安装了32位驱动程序的64位系统上

strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE12\MSO.DLL" | findstr "ACE.O"
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE14\MSO.DLL" | findstr "ACE.O"
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\MSO.DLL" | findstr "ACE.O"

即使在即将到来的办公室2016

c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\MSO.DLL
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\MSO.DLL

你会发现琴弦

  • 微软ACE

  • 微软ACE.Oledb.12.0

Office 2013还附带了csi.dll

c:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\Csi.dll
c:\Program Files\Common Files\Microsoft Shared\OFFICE15\Csi.dll

其中包含“ Microsoft.ACE.OLEDB.15.0

和Office 2016

c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\Csi.dll
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\Csi.dll

该版本具有“ Microsoft.ACE.OLEDB.16.0 ”版本


我在VS2015中使用Nuget LinqToExcel遇到此错误。事实证明,因为我安装了x64 ACE,所以我必须显式地针对x64(配置管理器)进行构建,而不是针对任何CPU。
subsci

Powershell显示“ Microsoft.ACE.Oledb.12.0”已安装。但是,安装Access 2007程序包(又名2007 Office System驱动程序:数据连接组件)使我无所适从。我的系统上已经有:Office 2016 Ent,Visual Studio 2017 Ent
SushiGuy

6
通知安装哪个版本的PowerShell脚本是天才!谢谢@Bernhard
Rob Bowman

有点离题,但是这个简单的功能是针对您的ODBC驱动程序的:Get-OdbcDriver | select Name,Platform
Bernhard

通过下载32位Access 2016运行时,这为我在64位服务器计算机上解决了问题。为了安全起见,基本上从32位开始(当您尝试在项目中将其切换为64位时,会发生坏事情)。
埃里克·穆塔

45

您需要检查的第一件事是应用程序的构建配置。

  • 如果您是在x86平台下构建项目的,那么为了解决问题,您应该在计算机上安装以下软件包:

    1. 为了使用“ Microsoft.ACE.OLEDB.12.0”提供程序,必须首先 安装Microsoft Access Database Engine 2010可再发行组件 ,此安装位于:http : //www.microsoft.com/download/en/details.aspx ?id = 13255

      安装完成后,请尝试运行您的应用程序,如果这样可以很好地解决此问题,请继续执行步骤2。

    2. 下一步是一个无法解释的变通办法,即使它是Office 2007的数据连接组件,也可以在Office 2010中使用。我不太确定为什么这样做,但事实证明它可以工作,并且几乎在所有情况下都可以工作。您需要安装2007 Office system驱动程序:数据连接组件,该安装位于:http : //www.microsoft.com/download/en/confirmation.aspx?id=23734

      安装完成后,请尝试运行您的应用程序,这应该可以解决该问题。

  • 如果您尝试运行在x64或AnyCPU平台下构建应用程序,我建议您首先验证它是否在x86平台下按预期运行。如果它不能在该x86平台上运行,请执行第一部分中的步骤并验证它是否按预期运行。

    我确实读过,包括OLEDB数据库驱动程序在内的MS Access驱动程序仅在x86平台下有效,在x64或AnyCPU平台下不兼容。但这似乎是不正确的。我在构建x86时验证了我的应用程序正在运行,然后使用被动标志安装了Access Database Engine。

    1. 首先在本地下载文件您可以在此处下载安装:http : //www.microsoft.com/zh-cn/download/details.aspx?id=13255
    2. 使用带有“ / passive”标志的命令提示符进行安装。 在命令提示符下,运行以下命令:'AccessDatabaseEngine_x64.exe / passive'

    经过这两个步骤,在x64或AnyCPU构建配置中构建后,我设法运行了我的应用程序。这似乎解决了我的问题。

注意:步骤的顺序似乎有所不同,因此请相应地遵循。


5
我遇到的问题是我从32位应用程序切换到64位,并且不再运行。您的说明的第二部分效果很好!该/被动标志允许安装甚至32位的Microsoft Office。
弗雷迪(Freddy)2016年

1
提示:将AccessDatabaseEngine_x64.exe提取到一个文件夹中,以获取AceRedist.msi和Data.cab文件。在管理员模式下打开cmd提示符,然后执行AceRedist.msi /passive
杰里米·汤普森

1
非常感谢。第一个选择对我有用。我还记得卸载32位Office面临的麻烦,而在安装64位Office之后,此问题已得到更早解决。但是,此64位办公组件代替了魔术。
Biki

由于2点,我已解决。非常感谢你。我需要安装此microsoft.com/download/en/confirmation.aspx?id=23734
SENA

33

当我在“配置管理器”对话框中将构建从“ x86”更改为“任何CPU”时,我在Visual Studio 2010中收到此错误/异常。我了解此OLEDB数据库驱动程序仅适用于x86,并且不兼容64位。将构建配置更改回x86对我来说解决了这个问题。


5
OLEDB与x64兼容。它可以在任何平台上运行,不仅可以在x86上运行,还可以在任何CPU上运行。请参阅下面的完整答案:stackoverflow.com/a/32760211/3637582
Merav Kochavi 2015年

在Visual Studio中调试应用程序时,实际上有助于选择x86而不是配置管理器中的任何CPU / x64。
iknownothing

25

我安装了MS驱动程序,但仍然对我不起作用。然后,我找到了解决该问题的博客文章。在此处阅读,否则将这两个图像(从该帖子链接)用作TLDR摘要:

在此处输入图片说明

在此处输入图片说明


即将发布此内容作为我的贡献。这是我的问题。我昨天将更改此IIS设置,因为解决方案中的一个项目是x86编译的,所以我假设它将整个程序归类为32位。
李李

我的服务器正在运行@ 64位,但是安装的MS Office组件是32位。这解决了我的问题。谢谢。
MarceloBarbosa

很难工作的一件令人难以置信的事情:(,我想知道您是否可以在Powershell中编写脚本并将其集成到某种自动化服务器设置脚本中?
David Rogers

可能是@DavidRogers,但我不是PS方面的专家,所以不要为此而找我!;-)
Shaul Behr

@ShaulBehr希望可以为其他人提供见识,我使用的特定命令是(在提升的Powershell / cmd窗口中):“ C:\ Windows \ System32 \ inetsrv \ ./ appcmd set apppool /apppool.name:YOURAPPPOOLNAMEHERE / enable32BitAppOnWin64:true “
David Rogers


15

对于所有仍受此影响的人。

我一直在得到错误...

OLEDB error "The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine."

……如OP所述,Shailesh Sahu。

我有64位Windows 7。

我的问题在PowerShell中脚本内,但使用的连接字符串类似于OP的帖子,因此希望我的发现可以应用于C#,PowerShell和依赖于“ Microsoft.ACE.OLEDB”驱动程序的任何其他语言。

我按照有关此MS论坛主题的说明进行操作: http //goo.gl/h73RmI

我首先尝试安装64位版本,然后从此页面安装AccessDatabaseEngine.exe 的32位版本 http://www.microsoft.com/zh-cn/download/details.aspx?id=13255

但是仍然没有喜悦。

然后,我在PowerShell中运行以下代码(来自SQL Panda的网站http://goo.gl/A3Hu96

(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION 

...这给了我这个结果(为简便起见,我删除了其他数据源)...

SOURCES_NAME              SOURCES_DESCRIPTION                                                                       
------------              -------------------                                                                       
Microsoft.ACE.OLEDB.15.0  Microsoft Office 15.0 Access Database Engine OLE DB Provider

如您所见,我有Microsoft.ACE.OLEDB。15 .0(十五)不是Microsoft.ACE.OLEDB。12 .0(十二)

因此,我将连接字符串修改为15并成功了。

因此,快速的PowerShell片段演示了如何对版本进行软编码...

$AceVersion = ((New-Object System.Data.OleDb.OleDbEnumerator).GetElements() | Where-Object { $_.SOURCES_NAME -like "Microsoft.ACE.OLEDB*" } | Sort-Object SOURCES_NAME -Descending | Select-Object -First 1 SOURCES_NAME).SOURCES_NAME

$connString = "Provider=$AceVersion;Data Source=`"$filepath`";Extended Properties=`"Excel 12.0 Xml;HDR=NO`";"

修改以选择最新的ACE版本(如果不止一个)

希望任何发现此问题的人现在都可以检查以查看安装了哪个OLEDB版本并使用适当的版本号。


嗨,我正在尝试使用PowerShell阅读Excel工作表。Excel文件存储在SharePoint文档库中,并且服务器上没有Excel安装。我有Windows Server 2008 R2。我安装了Office系统驱动程序:数据连接组件,但是当我运行查询时看不到Microsoft.ACE.OLEDB。您对此有想法吗?还有什么建议吗?提前致谢。
doganak

3
我找到了答案。我曾要求我们的系统管理员安装MS Access数据库引擎。他已经安装了x86版本。当我再次在PowerShell x86中运行查询时,我看到了ACE.OLEDB。
doganak 2014年

很棒的PowerShell代码。我使用的是32位版本(未在PowerShell列表中显示),这使我无法安装64位版本。删除32位版本后,就可以安装64位版本,而不会显示“您已经有32位Office组件...”消息。确实在PowerShell列表中显示了64位版本,并且我的应用程序开始运行。
Doppelganger

13

尽管给出了许多答案,但我所遇到的问题尚未提及。

  • 我的方案: 64位应用程序,Win10-64,Office 2007 32位安装。
  • 从MS下载的32位安装程序AccessDatabaseEngine.exe的安装 报告成功,但未安装,已通过此处上面发布内容之一的Powershell脚本进行了验证。

  • 64位安装程序AccessDatabaseEngine_X64.exe的安装报告了令人震惊的错误消息:

在此处输入图片说明

很简单的解决方案已经被发现这里在使用Autodesk的网站。只需将参数/ passive添加到命令行字符串,如下所示:

AccessDatabaseEngine_X64.exe /被动

安装成功,OleDb驱动程序正常工作。

我使用OleDb处理的Excel文件是xlsx类型,由EPPlus 4.5生成并由Excel 2007修改。


1
我可以按常规方式安装AccessDatabaseEngine_X64.exe,但我使用被动参数来安装32位均衡器(AccessDataBaseEngine.exe)。然后,我终于可以从Visual Studio 2019连接到Access数据库
。– VolkanOzcan

10

您需要根据Office安装的具体程度将解决方案平台从“任何CPU”更改为“ x86”或“ x64”。

步骤如下:

  1. 在解决方案资源管理器中右键单击解决方案文件: 在此处输入图片说明

    1. 单击配置管理器。
    2. 单击“活动平台”下拉列表,如果x86已经存在,则选择它,否则单击“新建”。 在此处输入图片说明

    3. 从新平台下拉列表中选择x86或x64: 在此处输入图片说明

编译并运行您的应用程序。


6

如果安装的“ AccessDatabaseEngine”仍然无法解决问题,请使用以下解决方案:

您需要将Active Solution Platform从“任何CPU”更改为“ x86”。

OLEDB提供程序未在本地计算机上注册

从CodeProject.com


您可以在任何平台上运行它,不仅可以在“ x86”上运行,还可以在“任何CPU”上与“ x64”一样运行。请参阅下面的完整答案:stackoverflow.com/a/32760211/3637582
Merav Kochavi 2015年

6

我可以按照本文中的步骤解决此问题:http : //www.mikesdotnetting.com/article/280/solved-the-microsoft-ace-oledb-12-0-provider-is-not-registered-在本地机器上

对我而言,关键点是:

使用IIS进行调试时,

默认情况下,Visual Studio使用32位版本。您可以在Visual Studio中通过转到工具»选项»项目和解决方案»Web项目»常规来更改此设置,然后选择

“将IIS Express的64位版本用于网站和项目”

在检查了该选项之后,然后将项目的平台目标设置回“ Any CPU”(在故障排除过程中的某个位置将其设置为x86),便能够克服该错误。


1
谢谢,大多数其他答案都是关于降低到32位的,但是这可以帮助您前进到64位。
illinoistim

非常感谢你,这就是我想要的。
Manoj Kalluri

6

如果要调试Web项目,只需确保IIS Express以32位或64位运行,具体取决于您的项目设置。

工具>选项>项目和解决方案> Web项目

然后从中检查(或取消选中)“使用​​IIS Express的64位版本...”


1
哇,尝试其他解决方案的时间很多,只有您自己解决!谢谢
Hernaldo Gonzalez

5

首先,验证您的系统中安装了哪个版本的microsoft.ace.oledb.12.0。

在以下路径中检入C:\ Program Files \ Common Files \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL --64位已安装

在以下路径中检入C:\ Program Files(x86)\ Common Files \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL --x86位已安装

如果已安装(x86),则使用配置管理器将解决方案平台更改为x86,将x64更改为x64。

如果不可用,请使用以下链接进行安装

https://www.microsoft.com/zh-cn/download/details.aspx?id=23734


3

syp_dino,

您为“ Microsoft.ACE.OLEDB.12.0'提供程序未在本地计算机上注册”建议的针对我的解决方案是将Active Solution Platform从“ Any CPU”更改为“ x86”。

当我执行这些步骤,重建解决方案,抓取EXE并将其放置在网络上时,一切在Windows 7 64位计算机上都可以顺利进行。


您可以在任何平台上运行它,不仅可以在x86上运行,还可以在任何CPU上运行。请参阅下面的答案:stackoverflow.com/a/32760211/3637582
Merav Kochavi 2015年


3

我遇到了同样的问题。转到解决方案属性,然后将任何CPU更改为x86,我认为它可以完成工作。


3

执行以下2个步骤:1.在此菜单中:项目-> yourproject属性...->生成:取消选中“更喜欢32位” 2.在connectionString中:在扩展属性之前和之后编写注释,例如:Extended Properties =' Excel 12.0 Xml; HDR = YES'

                var fileName = string.Format("{0}", openFileDialog1.FileName);
            //var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);
            var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties='Excel 12.0 Xml;HDR=YES'", fileName);
            var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
            var ds = new DataSet();

            adapter.Fill(ds, TableNmae);

            DataTable data = ds.Tables[TableNmae];
            dg1.DataSource = data;

在安装Microsoft Access Database Engine 2010可再发行组件的同时,取消选中“首选32位”似乎对我有用。
IT

我未选中“首选32位”,它已启动并正在运行!!!
user1584253

3

这些配置于2020年1月在我的新机器上运行:

(仅1-x64)使用/ passive参数安装的Windows 10 x64,Office 365 x64,AccessDatabaseEngine_x64 2016,使用以下连接字符串将VStudio构建设置显式设置为x64:Provider = Microsoft.ACE.OLEDB.16.0; 数据源= D:... \ MyDatabase.accdb

(2-x64或x32)Windows 10 x64,Office 365 x64,使用/ passive参数安装的AccessDatabaseEngine_x64 2016,使用/ passive参数安装的PLUS AccessDatabaseEngine 2010(32bit),VStudio构建设置设置为AnyCPU,并具有以下连接字符串:Provider = Microsoft.ACE.OLEDB.16.0;数据源= D:... \ MyDatabase.accdb

(仅限3-x32)使用/ passive参数安装的Windows 10 x64,Office 365 x32,AccessDatabaseEngine 2010(32位),VStudio构建设置设置为x86,具有以下连接字符串:Provider = Microsoft.ACE.OLEDB.12.0; 数据源= D:... \ MyDatabase.accdb

故障注意事项

在连接字符串中使用ACE.OLEDB.12.0 x64提供程序失败,仅按上述(1)的方式安装了AccessDatabaseEngine_x64 2016。

在Visual Studio中使用AnyCPU构建设置在(1)中失败。需要设置x64。可能是因为AnyCPU意味着Vstudio必须在编译时看到x32 ACE.OLEDB.nn.0提供程序。

看到x64应用程序时,将不会安装ACE.OLEDB.12.0 2016 x32 / passive引擎。(ACE.OLEDB.12.0 2010 x32 /被动安装程序可以正常工作。)

结论

要使用x64构建设置,您需要具有2016 x64数据库引擎和ACE.OLEDB.16.0连接字符串提供程序以及显式x64构建设置,才能在2020年1月与Office 365一起使用。使用/ passive选项使安装变得容易。归功于发布该提示的人!

要使用AnyCPU,我需要同时安装ACE.OLEDB.12.0 2010 x32引擎和ACE.OLEDB.16.0 x64引擎。这样,Vstudio可以在“ AnyCPU”编译时看到x32和x64引擎。我可以将提供程序连接字符串更改为用于x32操作的ACE.OLEDB.12.0或用于x64操作的ACE.OLEDB.16.0。两者都很好。

若要使用x86构建设置,您需要具有2010 x32数据库引擎和ACE.OLEDB.12.0连接字符串提供程序以及显式x86构建设置,才能在2020年1月与Office 365 x32一起使用。


2

我们在读取Excel文件时遇到类似的问题。

问题的历史记录:

由于内存需求,我们最近将应用程序从32位迁移到了64位。为此,我们将Windows 7从32位迁移到了64位。但是我们仍然在机器上安装了32位Office。

因为,因此在将Excel数据导入应用程序时遇到了这个问题。

解,

我下载了64位版本的http://www.microsoft.com/zh-cn/download/details.aspx?id=13255并安装了参数as,

AccessDatabaseEngine_x64.exe /被动

没有任何代码更改,我的问题就得到解决。

注意:

在64位操作系统和64位办公室上,没有此修复程序,我的功能就可以正常工作。仅当我们的应用程序在64位OS上安装了32位Office的应用程序为64位运行时才需要此修复程序。


但是,微软反对这种解决方案。由于此修复程序,很少有客户看到其他Office程序中的失真。
Rahul Techie


1

我按照别人的指示去做。安装此修补程序,安装该修补程序以及Microsoft Access Database Engine 2010。

我的问题是我在机器的2个站点中使用了相同的库(linq2sql)。1个有效,而1个无效。

最终,我发现我必须在非工作站点的应用程序池的高级设置中“启用32位应用程序”。

现在一切正常。


1

也可以尝试这些步骤

在SQL Server中,1.打开一个数据库。2.在“服务器对象”选项中打开“ Clic”。3.在“链接服务器”中打开“ Clic”。4.在“ Providers”中打开“ Clic”。5.在“ Microsoft.ACE.OLEDB.12.0”中打开“ Clic Rigth”。 6.取消选中所有选项并关闭


1

请记住在Web应用程序的服务器上安装AccessDatabaseEngine


1

我有同样的问题,但在这种情况下,microsoft-ace-oledb-12-0-provider,我的计算机上已经安装了,并且对于开发的其他应用程序运行正常。

这些应用程序与我遇到问题的应用程序之间的区别是,旧应用程序在“ 本地IIS ” 上运行,而有错误的应用程序在“ IIS Express(从Visual Studio运行)”上。所以我所做的是-

  1. 右键单击项目名称。
  2. 转到属性
  3. 转到右侧的“ Web”选项卡。
  4. 在服务器下,选择本地IIS,然后单击创建虚拟目录按钮。
  5. 再次运行该应用程序,它可以正常工作。

1

我的计算机上已经安装了Microsoft Access Database Engine 2010可再发行组件,但仍收到Microsoft ACE OLEDB提供程序错误。

然后我回想起我最近已升级到Office 2016,因此,也许我应该尝试重新安装Microsoft Access Database Engine 2010可再发行组件。这解决了我机器上的问题。

因此,如果您已升级到其他版本的MS Office,甚至修复/重新安装了MS Office,请在浪费时间查找其他修补程序之前,尝试重新安装Microsoft Access Database Engine 2010 Redistributable。祝好运!


1

1.)使用ConnectionStrings.com验证您的连接字符串

2.)确保您安装了正确的数据库引擎。这是帮助我的两个数据库引擎。

Microsoft Access数据库引擎2010可再发行

2007 Office System驱动程序:数据连接组件

3.)构建目标平台为“任何CPU”可能存在问题,可能需要为“ X86”(属性,构建,平台目标)。


您可以在任何平台上运行它,不仅可以在“ x86”上运行,还可以在“任何CPU”上与“ x64”一样运行。请参阅下面的完整答案:stackoverflow.com/a/32760211/3637582
Merav Kochavi 2015年

好的,我认为情况并非如此……因此,值得一提的是,有人的构建目标平台可能是问题的一部分。
u8it

1

如果在尝试从ASP.NET应用程序使用ACE时收到此错误,则最可能的原因是您安装了32位版本之一。默认情况下,在64位操作系统上的IIS将在64位工作进程中运行应用程序。64位进程无法加载32位DLL。当对ACE提供程序进行调用时,该64位进程将尝试查找64位DLL。如果不存在,则会出现错误消息,将您带到这里。

在这种情况下,您有两个选择。首先,您可以安装2010 64位版本。如果安装了2007 32位版本,则只需在其旁边安装2010 64位版本。如果已安装32位版本的2010,则需要将其卸载并下载并安装64位2010版本。您不能同时安装32位和64位版本的2010提供程序。如果要在开发计算机上执行安装,则任何现有Office安装的位数也可能会限制您。

第二个选项是更改IIS中的应用程序池以启用32位应用程序。如果您使用的是IIS的完整版,则可以使用管理工具执行此操作(控制面板»管理工具»Internet信息服务(IIS)管理器)。

欲了解更多信息,请参考以下链接


1

将数据从Excel文件导入MS-SQL时,我收到此错误。该提供程序已经安装(64位),这令我惊讶,为什么它不起作用。因此,我要做的只是找到此处使用的导入/导出应用程序,即.EXE。我在

C:\ Program Files \ Microsoft SQL Server \ 130 \ DTS \ Binn \ DTSWizard.exe

然后,我直接运行.exe来执行数据导入。而且有效!


嗯,我那里有几个版本,SSMS必须使用了错误的版本。
史蒂夫·卡夫(SteveCav)

1

现在这对我有用。

  1. 访问此页面,然后下载适合您的计算机的软件包(AccessDatabaseEngine.exe或AccessDatabaseEngine_X64.exe)
  2. 安装。
  3. 享受...您的代码现在可以使用了...

但是对于您的应用程序包,您可以使用以下任何解决方案:

  1. 进入“ C:\ Program Files(x86)\ Common Files \ microsoft shared”或“ C:\ Program Files \ Common Files \ Microsoft Shared”,然后将“ OFFICE14”目录放在包文件的相同位置。

要么

  1. 在安装包中附加两个项目(在item1中)。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.