주로 SQL Server에서 특정 그룹의 구성원 인 사용자 목록을 검색해야했습니다. 나는 완벽하게 작동하는 그물에서 무언가를 발견 할 수 있었다. 해결 방법은 다음과 같이 표시됩니다 :Active Directory - 특정 그룹의 구성원 인 사용자 및 그룹 얻기
지금은CREATE PROCEDURE [dbo].[NES_GetADGroupMembers]
(@groupName VARCHAR(max))
AS
BEGIN
CREATE TABLE #MemberOfGroups
(
groupName varchar(400),
cn varchar(400),
displayName varchar(400)
)
SET NOCOUNT ON
DECLARE @t varchar(100), @t2 varchar(1000),
@ot varchar (4000), @tt varchar (4000);
DECLARE gC CURSOR FOR
SELECT cn, distinguishedName
FROM openquery (ADSI, 'SELECT cn, distinguishedName
FROM ''''LDAP://Mydomaindomain/CN=users,DC=Mydomain,DC=com''''
WHERE objectCategory = ''group''')
OPEN gC
FETCH NEXT FROM gC INTO @t, @t2
WHILE @@FETCH_STATUS = 0
BEGIN
SET @ot = '''SELECT cn, displayName
FROM ''''LDAP://Mydomaindomain/CN=users,DC=Mydomain,DC=com''''
WHERE objectCategory = ''''Person'''' AND objectClass = ''''user''''
AND memberOf=''''' + @t2 + '''''';
SET @tt = 'select '+ ''''[email protected]+'''' +' As groupName, cn, displayName from openquery(ADSI,'+ @ot +''') order by cn'
INSERT INTO #MemberOfGroups (groupName, cn, displayName)
EXEC (@tt)
FETCH NEXT FROM gC INTO @t, @t2
END
CLOSE gC
DEALLOCATE gC
SELECT
groupName, displayName
FROM
#MemberOfGroups
, 그 그냥 잘 작동 입력 그룹의 사용자를 반환.
그러나 새로운 요청이있어 사용자가 회원처럼 다른 그룹을 회원으로 가질 수 있습니다.
objectClass = ''group''
을 포함하도록 WHERE 조건에서 필터를 업데이트하려고했지만 작동하지 않습니다.
누구든지이 쿼리에 대해 조금 알고 있으며 그룹 (입력 그룹의 구성원)도 검색 할 수 있습니까?
당신의 문제는 필터에 있다고 생각합니다. "그룹"이 사람이 아니기 때문에 ObjectCategory = Person을 꺼내서 대답을 얻는 지 확인하십시오. –
나는 그것을 제거하고 또한 그룹으로, 그러나 헛된에서'OR' 진술을 추가하는 것을 시도했다. –