Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否将记录的LDAP成员导入sql数据库?_Sql_Sql Server_Arrays_Ldap - Fatal编程技术网

是否将记录的LDAP成员导入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),

我们希望将用户从LDAP导出到SQL中的表中

我可以从LDAP导入名称和其他信息,但无法导入memberof信息

我知道这是一个数组,但不确定如何在sql查询中获取它


提前感谢。

因为您已经有了用户信息,所以可以将该信息存储到临时表中。对于每个用户,您可能都可以查询组对象以获取组信息。 我有下面的单一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。@您使用的是什么工具?(即提取、加载、数据库等)