【发布时间】:2018-12-05 20:17:21
【问题描述】:
我正在使用下面的查询从 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
【问题讨论】:
-
你能告诉我们你使用的 PowerShell 命令给你 21 个成员吗?
-
这原来是一个“设置”。在 ADSI 链接服务器上,您必须指定域名,即使您是管理员并且您只指定用户名/密码,它也不起作用。它必须是 DOMAIN\Username 。
标签: sql-server active-directory sql-server-2014