【问题标题】:SQL Server 2014 - ADP Query pulling partial membersSQL Server 2014 - ADP 查询拉部分成员
【发布时间】:2018-12-05 20:17:21
【问题描述】:

我正在使用下面的查询从 SQL Server 2014 连接到 AD。用于链接服务器 ADSI 的用户 ID 是管理员并且拥有完全权限。

此查询仅返回 7 个成员,但实际上有 21 个成员。 Powershell返回21个成员(由于不同原因不能使用)

SELECT 
    sAMAccountName as Login, 
    CN as Name, 
    GivenName as FirstName,
    SN as LastName, 
    DisplayName as FullName 
FROM 
    OPENQUERY(ADSI, 'SELECT
                         sAMAccountname,
                         givenname,
                         sn,
                         displayname,
                         CN 
                     FROM
                         ''LDAP://DOMAIN/DC=...,DC=...'' 
                     WHERE 
                         objectCategory = ''person'' 
                         AND objectClass = ''user''  
                         AND memberOf = ''CN=group1_Users,OU=Groups,DC=...,DC=...'' 
                     ORDER BY CN')

目前我不确定可能出了什么问题。我看了一遍,似乎没有解决办法。

我只想传递一个特定的组名。

但是,反之亦然,即查找用户 ID、获取 ADSPATH 并将其传递以获取用户所属的组作品。

这对我有用,但我不需要它。

Query AD Group Membership Recursively Through SQL

我也试过了,但我仍然有 7 个成员

DECLARE @path NVARCHAR(MAX) = 'CN=group1_Users,OU=Groups,DC=...,DC=...',

SET @Query = 'SELECT cn, AdsPath, samAccountName
              FROM OPENQUERY (ADSI, ''<LDAP://domain/DC=...,DC=...>;(& 
                                      (objectClass=User)(memberof:1.2.840.113556.1.4.1941:=' + @Path +
                                     '));samAccountName,cn, adspath;subtree'')'

EXEC SP_EXECUTESQL @Query

【问题讨论】:

  • 你能告诉我们你使用的 PowerShell 命令给你 21 个成员吗?
  • 这原来是一个“设置”。在 ADSI 链接服务器上,您必须指定域名,即使您是管理员并且您只指定用户名/密码,它也不起作用。它必须是 DOMAIN\Username 。

标签: sql-server active-directory sql-server-2014


【解决方案1】:

这原来是 SQL 链接服务器属性上的设置。 如果您使用“使用登录名的当前安全上下文进行制作”并且您是域管理员,它将无法正常工作。 您必须指定“使用此安全上下文”在用户中指定 DOMAIN 名称,例如 DOMAIN\Username。如果没有 DOMAIN 名称,它就无法工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多