这个问题可能很愚蠢,但它已经让我困惑了一段时间......
首先,我曾经xp_logininfo 'groupA', 'members'
显示GroupA
, 结果的成员,member1
并且member2
被列出,但member3
不是。
然后,我用xp_logininfo 'member3', 'all'
显示的权限路径member3
。结果,groupA
被列为 的权限路径member3
。但是为什么没有在第一个语法中member3
列为成员?groupA
我在这里错过了什么吗?
正如评论中提到的,
xp_logininfo @account_name, 'members'
只会返回该组的下一级成员的列表。这在SQL Server Docs中有解释。文档还说“如果 account_name 是域帐户,则列表由域用户组成”。因此,如果您请求有关域组的信息,您只会返回域用户,而不是任何嵌套组。假设 GroupA 是域组,最可能的解释是 member1 和 member2 是 GroupA 的直接成员,而 member3 是通过 GroupA 中的另一个域组的间接成员。
我们过去遇到过这个问题,这有点烦人!我们最终得到的解决方法是通过 ADSI 上的 openquery 进行 LDAP 查询,有点像这样。虽然这是更多的开销......