我们希望将用户从LDAP导出到SQL中的表。
我可以从LDAP导入名称和其他信息但是我无法导入信息成员。
我知道这是一个数组但不确定如何在sql查询中获取它。
提前致谢。
答案 0 :(得分:0)
由于您已拥有用户信息,因此可以将该信息存储到临时表中。对于每个用户,您可以查询组对象以获取组信息。 我有以下单个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)
答案 1 :(得分:0)
如果您准备使用框架,可以将Spring LDAP与JAVA一起使用并将所有记录作为对象(对象列表),然后您可以使用JDBC连接到数据库并根据表模式插入记录。
参考:http://docs.spring.io/spring-ldap/docs/2.0.2.RELEASE/reference/