SQL与Active Directory和嵌套组/用户

时间:2014-11-20 19:34:36

标签: sql sql-server-2008-r2 active-directory openquery

我有一个包含5个用户的AD组。其中3位来自Domain1,2位来自受信任的Domain2

我在读出用户有权访问哪些群组后,从domain2获取用户时遇到问题。

我使用openquery进行adsi。 (域和服务器是2008 R2

这是本主题的扩展

Query AD Group Membership Recursively Through SQL

更新 这是查询但我得到错误

select samAccountName,distinguishedName 
            FROM OPENQUERY(ADSI,'
                SELECT samAccountName,distinguishedName 
                FROM ''LDAP://domain/DC=...,DC=....,DC=....''
                WHERE 
                    objectCategory=''user'' AND
                    memberof:1.2.840.113556.1.4.1941:= ''CN=..,OU=..,DC=...,DC=....,DC=....'' ') 

这是我的工作的查询,但我没有从其他域获取嵌套组或用户。

select samAccountName,distinguishedName 
            FROM OPENQUERY(ADSI,'
                SELECT samAccountName,distinguishedName 
                FROM ''LDAP://domain/DC=...,DC=....,DC=....''
                WHERE 
                    objectCategory=''user'' AND
                    memberof= ''CN=..,OU=..,DC=...,DC=....,DC=....'' ') 

1 个答案:

答案 0 :(得分:0)

对adsi的openquery没有任何了解。只有一些评论:

  • 在第二个搜索语句中,应使用memberOf而不是成员
  • FSP用于表示来自外国森林的安全主体。见http://msdn.microsoft.com/en-us/library/cc223700.aspx。 从FSP返回用户/组的唯一提示是objectSID属性中的SID。但似乎没有简单的方法来做到这一点。请参阅Accessing Foreign Security Principals
  • 您只能使用member和memberOf属性获取直接成员或包含组,但不能使用嵌套的
  • 由于主要群组的群组成员未在会员和成员中列出。

<强>更新

好的,根据您的链接Query AD Group Membership Recursively Through SQL,以下内容应该有效:

SELECT samAccountName,distinguishedName
    FROM OPENQUERY (ADSI, '<LDAP://domain/DC=...,DC=....,DC=....>;
    (&(objectCategory=user)(member:1.2.840.113556.1.4.1941:=CN=..,OU=..,DC=...,DC=....,DC=....));samAccountName, distinguishedName;subtree');

另外,请根据以下内容检查功能级别:

http://www.technipages.com/active-directory-how-to-check-domain-and-forest-functional-level

“:1.2.840.113556.1.4.1941:=”语法要求功能级别为2008 R2。