具有Active Directory和嵌套组/用户的SQL
我有一个包含5个用户的广告组。其中3个用户来自域1,2个来自受信任的域2 在我读出哪些用户可以访问哪些组后,我在从domain2获取用户时遇到了一个问题 我正在使用openquery访问adsi。域和服务器是2008 R2 这是对这个主题的扩展 更新 这是查询,但我收到错误信息: 这是我的查询,可以工作,但我无法从其他域获取嵌套组或用户具有Active Directory和嵌套组/用户的SQL,sql,sql-server-2008-r2,active-directory,openquery,Sql,Sql Server 2008 R2,Active Directory,Openquery,我有一个包含5个用户的广告组。其中3个用户来自域1,2个来自受信任的域2 在我读出哪些用户可以访问哪些组后,我在从domain2获取用户时遇到了一个问题 我正在使用openquery访问adsi。域和服务器是2008 R2 这是对这个主题的扩展 更新 这是查询,但我收到错误信息: 这是我的查询,可以工作,但我无法从其他域获取嵌套组或用户 select samAccountName,distinguishedName FROM OPENQUERY(ADSI,'
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=....'' ')
没有关于openquery到adsi的知识。只有一些评论: 在第二个搜索语句中,应使用memberOf而不是member FSP用于表示来自国外森林的安全主体。看见 从FSP返回用户/组的唯一提示是objectSID属性中的SID。但似乎没有简单的方法可以做到这一点。看见 只能使用member和memberOf属性获取直接成员或包含组,但不能嵌套 由于主组而产生的组成员根本不在member和memberOf中列出。 更新: 好的,根据你的链接,以下应该是有效的:
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');
此外,请根据以下内容检查功能级别:
:1.2.840.113556.1.4.1941:=语法要求功能级别为2008 R2。更新我尝试使用此语法时遇到错误。从LDAP://DC=…,DC=。。其中ObjectClass=用户和成员:1.2.840.113556.1.4.1941:=CN=…,OU=…,DC=…,DC=…'我发现使用:1.2.840.113556.1.1.4.1941:我将获得来自其他域但我无法使用语法的嵌套组和用户?:1.2.840.113556.1.1.4.1941:LDAP_匹配规则_IN_链匹配规则要求域/林功能级别为2008 R2忘记域或林。您的林/域是否支持此功能?您的更新适用于1.2.840.113556.1.4.1941,但在域中,我搜索的林/域仅为W2K3,这可能是我无法看到来自其他域的嵌套组或用户的原因。谢谢,我会在你的帖子上做标记。我现在几乎要完成这个任务了。有人知道我怎么用Variable吗?选择samAccountName,区分OPENQUERY ADSI中的名称'&objectCategory=usermember:1.2.840.113556.1.4.1941:=CN='+@Variable+',OU=..,DC=..,DC=..,DC=。。。。;samAccountName,区分名称;子树';varible@varible在第一次出现错误+我想我可能需要很多??根据这一点。OPENQUERY不接受变量作为其参数。您可能需要先将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');