使用OPENROWSET通过SQL Server提供程序查询Active Directory时出错

时间:2018-07-09 15:22:24

标签: sql-server sql-server-2016

我正在使用OPENROWSET OleDB提供程序从Active Directory查询信息。

以非SysAdmin帐户运行时,出现以下错误。

  

对OLE DB提供程序'ADSDSOObject'的临时访问已被拒绝。您必须通过链接服务器访问此提供程序。

我使用的ADsDSOObject不需要如下所示的链接服务器设置...

OPENROWSET

我缺少允许这样做的什么权利?

1 个答案:

答案 0 :(得分:2)

这实际上是SQL Server的一个小错误,而不是权限问题。为此,您必须为ADsDSOObject链接服务器提供程序禁用“禁止临时访问”参数,但这很棘手。

启动SSMS并转到链接服务器提供程序。展开ADsDSOObject提供程序的属性。

ADsDSOObject Provider Properties

下一步是反直观。选中“禁止临时访问”旁边的框,然后单击“确定”。您实际上想将其设置为false,但这有一个窍门。

Disallow adhoc access

这将在您的注册表中创建适当的条目。它以前不存在。启动RegEdit,然后找到与您刚刚选中的复选框一致的注册表项。它将位于不同的位置,具体取决于您所使用的SQL Server版本。我的位置在HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ MSSQL14.MSSQLSERVER \ Providers \ ADSDSOObject中,但您的位置可能会略有不同。

DisallowAdHocAccess Registry Setting

这时,您要将1更改为0。您还需要重新启动SQL Server服务。完成后,您应该可以为该1个特定提供程序使用OPENROWSET。