"'Microsoft.ACE.OLEDB.12.0'提供程序未在本地计算机上注册"将xlsx的进程导入sql server时出错

Mos*_*ava 105 oledb excel sql-server-2008

我有64位Windows 7和SQLServer 2008 R2(64位)

我按照这里的说明将excel文件导入sql server,但在我尝试访问excel文件的那篇文章的图3部分中,当我点击下一步时,这个错误让我停下来:

The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine
Run Code Online (Sandbox Code Playgroud)

我在网上搜索我知道我必须安装AccessDatabaseEngine_x64.但是当我安装它时,我遇到了同样的问题

你能帮帮我怎么办?

Sla*_*ava 197

安装以下内容以解决您的错误.

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

AccessDatabaseEngine.exe(25.3 MB)

此下载将安装一组组件,以便于在现有Microsoft Office文件(如Microsoft Office Access 2007(*.mdb和.accdb)文件和Microsoft Office Excel 2007( .xls,*.xlsx和*)之间)传输数据. xlsb)文件到其他数据源,如Microsoft SQL Server.

  • "2007"对此非常具有欺骗性.我正在运行SSMS 2014,Office 64 Bit,Windows 8.1 64 Bit,并认为这已经过时了,但是这个"2007"Office组件做到了这一点.谢谢! (8认同)
  • 当我有一个XLSX格式的文件,将文件降级为XLS并且它为我工作时没有安装任何额外的东西,这发生在我身上. (5认同)
  • 这为我解决了这个问题. (2认同)
  • 该链接现在给出 404。试试这个 https://www.microsoft.com/en-us/download/details.aspx?id=54920 (2认同)

小智 53

Excel 2010驱动程序是64位,而默认的SSMS导入导出向导是32因此错误消息.

您可以使用导入导出数据(64位)工具导入.("C:\ Program Files\Microsoft SQL Server\110\DTS\Binn\DTSWizard.exe")注意该路径不是Program Files x86.

  • 我喜欢这个答案,但我想知道它们是否是一种改变SSMS默认值的方法. (5认同)
  • 这解决了我的问题.要将默认值更改为工作版,只需使用工作的`C:\ Program'替换x86文件夹`C:\ Program Files(x86)\ Microsoft SQL Server\110\DTS\Binn\DTSWizard.exe`中的默认值Files\Microsoft SQL Server\110\DTS\Binn\DTSWizard.exe`.如果你想要安全,首先重命名旧的而不是替换他,所以如果出现任何问题你可以回去. (4认同)
  • +1。我是关于其他答案中建议的安装额外组件。但是当一切都已经在我的机器中时为什么还要安装呢? (3认同)
  • 我必须通过单击“开始”并搜索“导入和导出”并选择64位工具来打开64位导入器。 (2认同)
  • 我找到了导入向导的64位版本,但不幸的是,与我的计算机上的32位版本不同,下拉列表中未将“ Excel”列为可能的数据源。 (2认同)

小智 16

这是唯一一个为我解决问题的安装.

SQL 2008 r2 w/office 2010 64位:"2007 Office System驱动程序:数据连接组件"

  • 事实上,这个 32 位安装程序也为我解决了这个问题,尽管我使用的是 64 位版本的操作系统和 SQL,但 Office 是 32 位的。 (2认同)

小智 15

将其另存为CSV文件并将其作为平面源文件导入.

  • 这实际上是最简单的解决方案! (2认同)