"Microsoft.ACE.OLEDB.16.0"提供程序未在本地计算机上注册。(System.Data)

213
当我尝试通过 MSSQL Server 数据导入(即 SSIS 包)连接任何 Excel 时,出现以下错误:Microsoft.ACE.OLEDB.16.0 提供程序在本地计算机上未注册。(System.Data
我认为这不是同一版本,需要进行其他修补。

22
我不明白为什么这个问题被投票关闭并标记为重复。显然,它是一个更新的错误信息,需要新版本的组件!这个问题和答案帮助我解决了我的 Microsoft.ACE.OLEDB.16.0 问题。那个被指向的问题是关于 Microsoft.ACE.OLEDB.12.0 的,并且回答了那个版本的问题。这个问题应该重新打开。 - Arvo Bowen
@ArvoBowen 没问题。我重新打开了它。但是这两个问题有相同的解决方案。 - Hadi
20
怎么会呢?它们是需要不同下载的不同版本。虽然它们相关,但有着不同的解决方案。如果我按照其他问题的答案去做,它并不能解决我的问题。 - Arvo Bowen
11个回答

250

如果你尝试了上述方法仍然无法解决问题,那么请注意以下细节。如果你右键点击数据库并选择“任务”->“导入”,出现问题时,请到开始菜单,在sql server下找到x64位的导入导出向导,然后尝试使用它。对我来说非常有效,但是花费了我太长时间才找到它,微软!


3
为了在64位版本的DTSWizard中使用Excel,请安装2016年Access数据库引擎可再发行版: https://www.microsoft.com/en-us/download/details.aspx?id=54920来源: http://sqlblog.com/blogs/john_paul_cook/archive/2017/06/11/sql-server-2016-import-and-export-wizard-and-excel.aspx我亲自测试过,这个方法有效。请注意,SSDT是一个32位应用程序,因此如果您从它启动导入/导出向导,则会启动32位版本的向导。即使在Visual Studio 2017和SQL Server 2017中也是如此。 - otravers
2
谢谢您的回答,非常有用。我使用的是Office(2016)64位和SQL 64位以及相应的连接器Microsoft.ACE.OLEDB.16.0。然而,我收到了“'Microsoft.ACE.OLEDB.16.0'提供程序未在本地计算机上注册”的消息。这根本就没有意义。直接打开导入向导64位后,我没有任何问题导入Excel文件。我的印象是,默认情况下,任务->导入路径会进入32位向导,并且会干扰64位项目,但不确定。谢谢Paul。 - Coffee
3
@Rod,尽管名称如此,我向您保证,这确实解决了Excel和DTSWizard的特定问题。 - otravers
10
我没有 Import/Export 向导的 x64 版本。 - PeterX
2
64位的导入/导出向导不会随SSMS一起安装。您需要在本地安装SQL Server才能获取该工具。 - HotN
显示剩余7条评论

143

注意:我正在运行 SQL 2016 Developer 64 位版和 Office 2016 64 位版。

我曾经遇到过同样的问题,通过下载以下内容解决了它:

  1. 下载并安装此程序: https://www.microsoft.com/en-us/download/details.aspx?id=54920

  2. 无论您要访问/导入的文件是什么,都要确保将其选择为 Office 2010 文件(即使它可能是 Office 2016 文件)。

这个方法有效。

来源


5
对我来说完全有效,谢谢!它将我的Office 2016文件加载为Office 2007-2010,并且工作得很好。比尝试CSV / TSV要好得多。 - tc_NYC
3
谢谢提醒我不要选择 Office 2016。我不确定我会尝试其他版本。 - birdus
1
我刚刚更新了 Microsoft Access 数据库引擎 2016 可再发行版的当前链接。 - e_i_pi
6
必须在命令行中使用 /quiet 标志运行(32位)安装程序,然后它才能正常工作。否则它会抱怨。 - Syntax Error
1
这里的一个关键要素是你必须在自己的计算机上安装 SQL Server 64 位版本。仅仅安装 MSSMS(SQL Server Management Studio)不够,因为MSSMS总是32位的,而你的64位Office只能允许你安装 Microsoft Access 数据库引擎 2016 可再发行版的64位版本(这个版本不能与32位的MSSMS一起工作)。 - Alpi Murányi
显示剩余2条评论

36

作为一个快速解决方法,我只是将工作簿保存为Excel 97-2003 .xls文件。使用这种格式导入时没有错误。


对我没用。出现了“外部数据库驱动程序意外错误(1)。 (Microsoft JET Database Engine)”的错误。 - Rod
2
经过几次尝试,最终我发现这是我问题的最快解决方案。 - Lysoll
6
只有在导入的行数少于64K时才有效。 - Cougar9000
1
请注意,您的电子表格不要超过65,536行,否则进行此转换时可能会丢失数据。 - Fiach Reid

34
如果你已经安装了64位操作系统和64位的SQL Server Management Studio(SSMS),并且已经安装了AccessDatabaseEngine(64位),但仍然收到错误提示,那么请尝试以下解决方案:
1. 直接打开SQL Server导入和导出向导。
如果你能够使用直接的SQL Server导入和导出向导连接成功,那么从SSMS导入数据就是问题所在,就像如果你从SSMS导入数据就激活了32位一样。
2. 不要安装AccessDatabaseEngine(64位),而是安装AccessDatabaseEngine(32位)。安装时,如果你已经安装了其他应用程序,Windows会阻止你继续安装。 如果是这样,请按照MICROSOFT提供的以下步骤执行静默安装。

如果已安装Office 365,则并行检测将防止安装继续进行。相反,请从命令行执行这些组件的/quiet安装。为此,请下载所需的AccessDatabaseEngine.exe或AccessDatabaeEngine_x64.exe到您的计算机,打开管理员权限的命令提示符,并提供安装路径和开关。例如:C:\Files\AccessDatabaseEngine.exe /quiet

或者在下面的链接中检查附加信息内容: https://www.microsoft.com/en-us/download/details.aspx?id=54920

4
哇,这真是令人沮丧。原来SSMS 18.5的安装程序是64位的,但应用程序本身是32位的。我不断安装64位的AccessDatabaseEngine office组件,结果出现相同的错误。查看任务管理器后,发现SSMS是32位的......然后,我使用了您的方法:C:\Files\AccessDatabaseEngine.exe /quiet,因为我安装了64位的Office 2016。这个方法奏效了!!它成功地在64位的Office旁边安装了32位的数据库引擎。 - rjkunde
1
尝试使用AccessDatabaseEngine(32位),这对我有效。 - Kevin Ng
我使用的是64位办公软件。安装了64位组件,但仍然出现错误。运行32位安装程序时,只是打开而已,无法安装成功。最终通过命令行运行32位安装程序,导入操作得以正常进行。 - vvvv4d
这真的很有帮助...我之前只是盲目地尝试64位,因为我知道操作系统和Office都是64位。 - Sudheer
这真的很有效。适用于Win10 64位操作系统的最佳答案。 - sanpat

16

对我来说可行的替代方法是将其直接转换成CSV格式。


3
面对重大问题,需要有伟大的解决方案。谢谢@PeterX。 - ElMatador
2
运行得非常好!当我上传CSV文件时,我只需要选择平面文件而不是MS Excel 2016。 - kiradotee
2
太好了!当“更好”的方法不起作用时,使用“更简单”的方法... :) - aderchox
这对我有用 - Office 365 - Microsoft® Excel® for Microsoft 365 MSO (版本 2305 Build 16.0.16501.20074) 64 位 - SQL Server Management Studio 19.1.56.0 - user10186832

9

和其他答案不同,你只需要在其它 64 位 Microsoft 程序旁边安装 "ACEDB driver 64 位"。

在我的情况下,我安装了 "Microsoft 365" 64 位 (Microsoft Office 365)。

因为出现了以下错误:

'Microsoft.ACE.OLEDB.16.0' 提供程序未在本地注册 机器上。 (System.Data)

我尝试安装 Microsoft Access Database Engine 2016 Redistributable。但是我得到了 32 位和 64 位安装程序的错误信息。

64 位:

你无法安装 Microsoft Access 数据库引擎 2016 的 64 位版本,因为你当前已经安装了 64 位的 Office 产品。如果你想要安装 32 位的 Microsoft Access 数据库引擎 2016,你需要先卸载 64 位的 Office 产品安装。在卸载以下产品后重新运行设置程序,以安装 Microsoft Access 数据库引擎 2016 的 32 位版本:Office 16 Click-to-Run Extensibility Component 64 位 Registration。

或者是32位:

您无法安装Microsoft Access数据库引擎2016的32位版本,因为您当前已安装64位Office产品。如果您想安装32位Microsoft Access数据库引擎2016,则需要先删除64位Office产品的安装。在卸载以下产品后,重新运行设置以安装Microsoft Access数据库引擎2016的32位版本:Office 16 Click-to-Run Extensibility Component 64-bit Registration

我无法卸载单个组件:

enter image description here

步骤:

  1. 无需卸载和重新安装任何内容。

  2. Microsoft Access Database Engine 2016 Redistributable处点击“下载”。

enter image description here

选择 AccessDatabaseEngine_X64.exe。不需要安装32位的 AccessDatabaseEngine.exe,与其他答案不同。

enter image description here

  1. 命令提示符中运行可执行文件。不要忘记添加/quiet,否则它将无法工作:

    C:\Users\myuser\Downloads>AccessDatabaseEngine_X64.exe /quiet
    
  2. 如果需要管理员权限,请按OK。

在此之后,我的宏可以从Excel工作表中获取数据。我检查了Microsoft 365套餐中的本地Microsoft Access,它仍然可以正常工作。

感谢您当前无法安装32/64位版本的Microsoft Access数据库引擎,因为您当前使用的是64/32位Office以及其来源如何在64位Office中安装Microsoft.Ace.oledb 32位?


1
非常好的指导!在我的情况下,32位解决了问题。 - Basssprosse
@Basssprosse 这很有帮助,显然取决于系统,你的可能是32位的?或者更简单地说,如果64位不起作用,当然要检查32位。 - questionto42
哦,是的,有趣的是我的办公室版本是32位的。我以为它是64位的。谢谢! - Basssprosse
我尝试使用exe安装,但失败了。最终我通过使用命令提示符和/quiet的过程来安装成功了。有人能解释一下为什么需要这样做吗? - Deathstalker
当我通过命令行以静默模式运行64位和32位时,这在Windows 11企业版上对我有效。谢谢! - MDV2000
对我来说,在管理员帐户中运行的命令行是这样的: accessdatabaseengine_X64.exe /quiet/passive选项无效。 - cskwg

5

9
尝试过后仍然出现相同错误。 - Suhail Abdul Rehman Chougule
2
它适用于在SQL Server导入和导出向导上导入Microsoft Excel 2007-2010。 - Junior Mayhé

4

如果您使用的是 Office 365

  1. 32位版本下载在这里
  2. 以管理员身份运行命令提示符 --> C:\Downloads\AccessDatabaseEngine.exe /quiet
  3. 关闭 SSMS 并重新打开,尝试再次导入文件。

还不起作用?

  1. 64位版本下载在这里
  2. 以管理员身份运行命令提示符 --> C:\Downloads\AccessDatabaseEngine_X64.exe /quiet
  3. 关闭 SSMS 并重新打开,导入文件。

注意:下载可执行文件的路径可能为 "C:\Downloads\User\USERNAME\Downloads\AccessDatabaseEngine.exe" ,例如


我的 MS Office 版本是 32 位的,所以这个解决方案对我有效! - Basssprosse

1

您现在需要使用来自Access-Redist(32/64位)的新XLSX驱动程序。

由于最近的累积更新,当前的XLS驱动程序已经损坏。


1

请按照以下步骤操作:

  1. 前往[此处][1],下载 Microsoft Access Database Engine 2016 Redistributable 并安装。
  2. 关闭 SQL Server Management Studio。
  3. 进入开始菜单 -> Microsoft SQL Server 2017 -> SQL Server 2017 Import and Export Data (64-bit)。
  4. 打开应用程序并尝试使用 "Excel 2016" 选项导入数据,应该可以正常工作。

尝试了步骤1-4,对我来说不起作用。 - Kevin Ng
这对我有用;谢谢。 - xinthose

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接