【问题标题】:ad hoc access to ole db provider 'microsoft.ace.oledb.12.0' has been denied. you must access this provider through a linked server对 ole db 提供程序“microsoft.ace.oledb.12.0”的临时访问已被拒绝。您必须通过链接服务器访问此提供程序
【发布时间】:2019-04-12 05:23:59
【问题描述】:

尝试在 sql server 中导入 excel 文件时。出现上述错误。

【问题讨论】:

    标签: sql-server-2017


    【解决方案1】:

    转到链接服务器 > 提供程序并双击您在 OPENROWSET 查询中使用的提供程序并检查是否启用了“禁止临时访问”,如下所示。

    您还可以在注册表中的 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\INSTANCE NAME\PROVIDERS\SQLNCLI10 下找到此选项的值。运行 regedit 并转到上面的路径并找到“DisallowAdHocAccess”,如下所示。

    我们可以从 SSMS 提供程序属性中禁用“禁止临时访问”,但它会删除注册表中的条目,而不是将值更改为零,并且我们仍然会收到对 OLE DB 提供程序的临时访问被拒绝错误。

    需要做的是,需要将此注册表项从 1 更改为 0,以使其适用于非系统管理员登录。因此,双击条目并将值更改为零,然后保存记录。

    即使“禁止临时访问”被禁用,我们也需要检查注册表项中的“禁止临时访问”。如果缺少该条目,请从 SSMS 中的提供程序属性中启用该选项,然后通过将注册表中的值更改为零来禁用它。

    【讨论】:

    • 当我使用 sa 用户时不会出现错误但其他 sql 用户给出错误
    【解决方案2】:

    这是可用于启用开放行集使用的 T-SQL。

    EXEC sp_configure 'show advanced options', 1
    RECONFIGURE WITH OVERRIDE
    GO
    EXEC sp_configure 'ad hoc distributed queries', 1
    RECONFIGURE WITH OVERRIDE
    GO
    

    在此之后,他能够将数据从 excel 表中提取到 SQL Server。好吧,对于一个看起来很复杂的问题,这是一个非常简单的解决方案。如果您有其他建议,请分享。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-14
      • 2013-06-03
      • 2016-01-11
      • 2016-09-15
      • 1970-01-01
      相关资源
      最近更新 更多