sql-server - SQL Server 2019 : 'Microsoft.ACE.OLEDB.16.0' provider is not registered on the local machine. (System.Data)

标签 sql-server excel provider

我有一个 SQL Server 实例 2019 64 位和 Microsoft Office 2019 64 位。
当我想使用 SSMS 从 Excel 文件中“导入数据”时,根据 Excel 版本出现以下错误:

  • SQL Server 2019:“Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册。 (系统.数据)
  • SQL Server 2019:“Microsoft.ACE.OLEDB.16.0”提供程序未在本地计算机上注册。 (系统.数据)

  • 我试图安装:
  • Microsoft Access 数据库引擎 2010 可再发行版
  • Microsoft Access 数据库引擎 2016 可再发行版

  • 虽然,在 SSMS 中,我可以看到 2 个提供程序:Microsoft.ACE.OLEDB.12.0 和 Microsoft.ACE.OLEDB.16.0
    但没有任何效果。
    我已经搜索了很长时间的解决方案,但我一无所获。
    该主题的解决方案不起作用:'Microsoft.ACE.OLEDB.16.0' provider is not registered on the local machine. (System.Data)
    Windows 10 64 位版本:20H2
    SQL Server 实例版本:Microsoft SQL Server 2019 (RTM-GDR) (KB4583458) - 15.0.2080.9 (X64) Nov 6 2020 16:50:01 版权所有 (C) 2019 Microsoft Corporation Developer Edition (64-bit) o​​n Windows 10 Pro 10.0(内部版本 19042:)

    最佳答案

    SSMS 导入选项是 32 位执行选项,意味着它作为 32 位应用程序运行。
    针对您的案例建议的解决方案是:
    1- 使用 64 位版本的 SSMS 导入/导出数据向导。
    2-删除 64 位 Office 并安装 32 位版本(如果可用),如果没有,则不要安装 Office 并安装 Access 数据库引擎 x86 版本。然后您可以使用 SSMS 中的导入向导。
    3-使用带有Windows 32位版本的虚拟机,但那时你将不得不使用更旧版本的ssms(据我测试,即使版本16.x.x也没有,所以我不得不安装sql server management set from这个 link )它的名字是 SQLManagementStudio_x86_ENU.exe 。
    这些是我的经验指导我使用的 3 个可用解决方案。

    关于sql-server - SQL Server 2019 : 'Microsoft.ACE.OLEDB.16.0' provider is not registered on the local machine. (System.Data),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65829276/

    相关文章:

    sql-server - 即使使用 Unicode 源和目标 (SSIS),字符也会显示不正确

    excel - Excel 2010 中出现错误,Range 类的 PasteSpecial 方法在宏内失败

    vba - 定义 Excel 范围

    angularjs - 在引导混合 angular 1 + 2 应用程序时,如何初始化 angular 1 注入(inject)器?

    asp.net-mvc - 面向初学者的 ASP.NET MVC 自定义成员资格

    sql-server - 带有 SQL Server 的 postgresql

    带时区的 SQL Server DateTime

    sql导入具有多个节点/子节点的xml文件

    vba - 获取表中列的动态范围

    无法从类中调用 Flutter Provider 的方法