当前位置: 首页 > 面试题库 >

TSQL:如何获取用户在Active Directory中所属的组的列表

呼延永新
2023-03-14
问题内容

我有两个查询,用于检索域中的所有组和所有用户, Mydomain

--; Get all groups in domain MyDomain
select  *  
from    OpenQuery(ADSI, '
    SELECT  samaccountname,mail,sn,name, cn, objectCategory
    FROM    ''LDAP://Mydomain/CN=users,DC=Mydomain,DC=com'' 
    WHERE   objectCategory=''group'' 
    ORDER BY cn
    ')

--; Get all users in domain MyDomain
select  *  
from    OpenQuery(ADSI,'
    SELECT objectCategory, cn, sn, mail, name, department,samaccountname
    FROM ''LDAP://Mydomaindomain/CN=users,DC=Mydomain,DC=com'' 
    WHERE objectCategory=''user'' 
    ORDER BY cn
    ')
--  where   samaccountname='mylogin'

我想找出的是

如何检索MyDomain特定用户所属的所有组的列表?

[更新] 我能够得到相反的结果
给定组名,检索所有用户

select  *  
from    OpenQuery(ADSI,
    'SELECT objectCategory, cn, sn, mail, name, department
    FROM ''LDAP://Mydomain/CN=users,DC=wl-domain,DC=com'' 
    WHERE MemberOf=''cn=_____GROUPNAME_____,CN=users,DC=Mydomain,DC=com''
    ORDER BY cn' 
    )

问题答案:

我认为这是基于T-SQL的AD界面的局限性之一-您无法检索多值属性,例如memberOf其中具有多个值的属性(如针对用户的属性)。

您可以检索单值属性,例如“ sn”(姓氏=姓氏)或“ givenName”和“ mail”等,但是基于SQL的接口无法处理分配有多个值的属性,例如“memberOf”给他们。

因此,恐怕您将不得不采用另一种方法来解决此问题-例如,在托管代码中查找并填充组成员身份(分别在SQL Server外部或在SQLServer内部作为CLR程序集)。

更新: 请参见此处(MSDN支持)以了解OPENQUERY
AD提供程序的局限性:

局限性

使用OPENQUERY语句从LDAP服务器提取信息的过程确实存在一些局限性。在某些情况下可以避免这些限制,但是在其他情况下,必须更改应用程序设计。另一种可行的方法是使用ADSI从LDAP服务器检索信息,然后通过使用ADO或其他数据访问方法在SQL中构建表的外部应用程序或COM对象。

第一个限制是 多值属性无法 在结果集返回 到SQL
Server。ADSI将从LDAP服务器读取模式信息,该信息定义了服务器使用的类和属性的结构和语法。如果从LDAP服务器请求的属性在模式中定义为多值,则不能在OPENQUERY语句中返回该属性。



 类似资料:
  • 还有,有没有可能在我的IDP中有一个服务帐户,我的后端可以直接询问IDP是否有一个用户在某个特定的组中?

  • 问题内容: 如何列出Linux中某个组的所有成员(可能还包括其他unice)? 问题答案: 不幸的是,据我所知,没有很好的便携式方法可以做到这一点。如果您尝试解析/ etc / group(如其他人所建议的那样),则会错过以该组为主要组的用户以及通过UNIX平面文件(例如LDAP,NIS, pam-pgsql等)。 如果我绝对必须自己做,则可能相反:使用来获取系统上每个用户的组(这将使NSS看到所

  • 问题内容: 在Unix / Linux中,如何通过命令行找出给定用户所在的组? 问题答案: 要么

  • 使用指南 - 数据报告 - Tongji API - 如何获取用户的站点列表 功能 获取当前用户下的站点和子目录列表,不包括权限站点和汇总网站。 接口名称 https://api.baidu.com/json/tongji/v1/ReportService/getSiteList 用户相关性 用户相关 应用级输入参数 无 返回参数 参数名 参数类型 是否必需 描述 list array of Si

  • 问题内容: 我需要获取所有CSS属性的元素列表。我怎样才能做到这一点 ? 问题答案: 从SO1004475复制源-jQueryCSS插件可返回元素的计算样式以伪克隆该元素?-如果您觉得有用,请点击链接并在那里进行评论。 看起来很荒谬,但这可能是您最好的选择- 不带任何参数的情况下,使用所有这些东西设置对象。 请注意,这不会捕获所有可能的CSS属性,尤其是CSS3的新属性。这是一个所有标准的CSS和

  • 但是响应只返回用户和他们的一些属性,而不是我在门户中看到的所有属性。 进行REST调用以获取所有用户及其字段/属性的正确URI是什么?