SQL Server 2014-ADP查询提取部分成员

时间:2018-12-05 20:17:21

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

我正在使用下面的查询从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

1 个答案:

答案 0 :(得分:0)

事实证明这是SQL链接服务器属性上的设置。 如果您使用“使用登录名的当前安全上下文进行设置”,并且您是域管理员,则它将不起作用。 您必须指定“使用此安全上下文创建” ,并且在用户中指定DOMAIN名称,例如DOMAIN \ Username。没有DOMAIN名称,该功能将无效。