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

7

我有Windows 10专业版x64、Excel 2016 32位和Sql Server 2017。我想将Excel文件导入到Sql Server中,我需要使用32位向导,因为Microsoft Excel在64位版本中不显示,但我遇到了以下错误:'Microsoft.ACE.OLEDB.16.0'提供程序未在本地机器上注册。(System.Data)

7个回答

9
如果您安装引擎时遇到组件已经安装的问题,请按照以下步骤操作(来自Microsoft):
如果Office 365已安装,则并排检测将阻止安装继续进行。相反,从命令行执行这些组件的/quiet安装。为此,请将AccessDatabaeEngine_x64.exe下载到您的PC上,打开管理员命令提示符,并提供安装路径和开关,例如:C:\ Files \ AccessDatabaseEngine_x64.exe / quiet

虽然我的情况与此相反,但这对我起作用了(我有64位版本,但SSMS导入向导寻找32位版本)。在尝试并排之前,我先寻找了来源。这是我找到的:https://support.microsoft.com/en-us/help/2874601/can-not-use-access-odbc-or-oledb-provider-outside-office-c2r-apps - puddleglum
这是解决此问题的方案。 - DJ.

7
如果您的操作系统(64位)和SSMS(64位)已安装了AccessDatabaseEngine(64位),但仍然收到错误消息,请尝试以下解决方案:
1:直接打开SQL Server导入和导出向导。
如果您能够使用直接的SQL Server导入和导出向导连接,则从SSMS导入数据时存在问题,就像激活32位一样。不要安装AccessDatabaseEngine(64位),而是尝试使用AccessDatabaseEngine(32位)。在安装时,如果您已经安装了其他应用程序,Windows将阻止您继续安装,如果是这样,请使用以下步骤。这是来自MICROSOFT的静默安装。
如果已经安装了Office 365,则侧边检测将防止安装继续进行。相反,可以从命令行执行这些组件的/quiet安装。为此,请下载所需的AccessDatabaseEngine.exe或AccessDatabaeEngine_x64.exe到您的计算机上,打开管理命令提示符,并提供安装路径和开关Ex:C:\Files\AccessDatabaseEngine.exe /quiet
或者在下面的链接中查看附加信息内容,保留HTML标签。

https://www.microsoft.com/en-us/download/details.aspx?id=54920


只有使用 /quiet 参数才能正常运行,而且我的机器上没有安装 Office,很奇怪。 - Nagy Ladislau Radu
@NagyLadislauRadu,你尝试在已安装的程序中进行检查了吗? - jpcarts23
是的,但对我来说问题在于正常安装它无法工作,SSMS 显示相同的错误。然后我卸载了它,使用 /quiet 安装,现在它可以工作了。 - Nagy Ladislau Radu

7

我成功地完成了以下操作(我使用的是 Excel 2016 和 SSMS 2017): 从 Excel 文件 -> 导出 -> 更改文件类型 -> Excel 97-2003 (*.xls)


我没有重新保存文件,但选择了旧的Excel版本,仍然对我有效。 - russelrillema
问题是关于导入的,但我却在“导出”上操作。将格式更改为97-2003对我有用。如果您只需要类似CSV的东西,那就足够好了。 - AlbatrossCafe

4

你如何进入64位导入向导?我在SSMS 18.2中找不到它。 - bendodge
我认为它不带有SSMS - 你必须从Access DB引擎获取它,或者至少我是这样做的。 - Matt

1
这是一个解决方法。最终,将Excel文档转换为CSV,并使用任务/导入数据/平面文件源选项导入我的数据(虽然我无法成功映射导入中的数据类型,但稍后可以使用CAST()进行修复)。上传时,请将文件类型从TXT更改为CSV。

Flat File Source

我有Office 365。我使用了CSV文件,放弃了XLSX,因为:
当我运行32位版本的AccessDatabaseEngine.exe时,我收到了这个错误: 32 not compatible with 64 当我运行64位版本的AccessDatabaseEnginex64.exe时,我收到了这个错误: 64 not compatible with 32

0

我没有使用数据库提供的导入/导出任务,而是按照这里的建议,利用安装了 MS SQL Server 2016 的“SQL Server 2016 导入和导出数据(64 位)”服务。在 Windows 10 中,您可以在SQL Server 2016应用程序中找到它。在您的情况下,在同一位置找到可用的SQL Server 2016 导入和导出数据(32 位)服务。


0

如果您已经安装了Microsoft Access数据库引擎,但仍然遇到相同的问题,请确保以管理员身份访问Microsoft SQL Server管理工具。


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