是否将记录的LDAP成员导入sql数据库?
我们希望将用户从LDAP导出到SQL中的表中 我可以从LDAP导入名称和其他信息,但无法导入memberof信息 我知道这是一个数组,但不确定如何在sql查询中获取它是否将记录的LDAP成员导入sql数据库?,sql,sql-server,arrays,ldap,Sql,Sql Server,Arrays,Ldap,我们希望将用户从LDAP导出到SQL中的表中 我可以从LDAP导入名称和其他信息,但无法导入memberof信息 我知道这是一个数组,但不确定如何在sql查询中获取它 提前感谢。因为您已经有了用户信息,所以可以将该信息存储到临时表中。对于每个用户,您可能都可以查询组对象以获取组信息。 我有下面的单一SamAccountName代码。您需要将此代码包装在循环中,以获得所有用户的组成员资格 CREATE TABLE #tmp ( GroupName varchar(100),
提前感谢。因为您已经有了用户信息,所以可以将该信息存储到临时表中。对于每个用户,您可能都可以查询组对象以获取组信息。 我有下面的单一SamAccountName代码。您需要将此代码包装在循环中,以获得所有用户的组成员资格
CREATE TABLE #tmp
( GroupName varchar(100),
Usercode varchar(100) );
DECLARE @ldap varchar(40); -- LDAP server name
DECLARE @LdapUsername NVARCHAR(256);
DECLARE @Query nVARCHAR(max);
DECLARE @Path nVARCHAR(max);
DECLARE @Query1 nVARCHAR(max);
SELECT @LdapUsername = 'hshah' -- SAMAccountName
SET @Query = '
SELECT @Path = distinguishedName
FROM OPENQUERY(ADSI, ''
SELECT distinguishedName
FROM ''''' + @ldap + '/ou=users,ou=Test,DC=domain,DC=local''''
WHERE
objectClass = ''''user'''' AND
sAMAccountName = ''''' + @LdapUsername + '''''
'')
'
EXEC SP_EXECUTESQL @Query, N'@Path NVARCHAR(1024) OUTPUT', @Path = @Path OUTPUT
SELECT @Path = REPLACE(@Path,'''','')
SET @Query = '
SELECT name AS LdapGroup, ''' + @LdapUsername +''' as Usercode
FROM OPENQUERY(ADSI,''
SELECT name
FROM ''''' + @ldap + '/OU=Groups,OU=Secured Objects,DC=domain,DC=local''''
WHERE
objectClass=''''group'''' AND'
SET @Query1 = '
member=''''' + @Path + '''''
'')
ORDER BY name
'
INSERT INTO #tmp
EXEC (@Query + @Query1)
如果您已经准备好使用框架,那么可以使用SpringLDAP和JAVA,将所有记录作为对象(对象列表)获取,然后可以使用JDBC连接到数据库,并根据表模式插入记录
Ref:您是在谈论使用SQL Server ADO提供程序从Active Directory获取数据吗?然后你就不走运了-该提供商相当“有限”(有些人会说“残废”),它不支持的一个东西是具有多个值的属性,比如
memberOf
。你需要memberOf attribute来获取用户所属的组信息吗?我需要一个所有用户的列表,包括他们关联的组成员身份。例如CN=user,CN=Users,DC=domain,DC=local将显示来自memberofI的多个条目。我相信您需要分两步来完成这项工作。首先,您需要获取用户数据,然后针对每个用户,您需要查询该用户所属的组:OU=Groups,OU=Secured Objects,DC=domain,DC=local。@您使用的是什么工具?(即提取、加载、数据库等)