• New code for SQL Server 2005 and above:

    declare @groups table ( id int identity, grp sysname, distinguishedName VARCHAR(MAX) )

    declare @usrs table ( id int identity, usr sysname, grp sysname )

    declare @actgrp sysname

    declare @actntgrp sysname

    declare @max-2 int

    declare @i int

    , @distinguishedName VARCHAR(MAX)

    , @sql VARCHAR(MAX)

    insert @groups (grp, distinguishedName)

    SELECT Name, distinguishedName

    FROM OPENROWSET('ADSDSOObject', 'adsdatasource';'<domain\user>';'<password>',

    'SELECT Name, distinguishedName

    FROM ''LDAP://<ads server name>/ DC=<subdomain>,DC=<domain>,DC=<net>''

    WHERE

    objectClass = ''group''

    ORDER BY name

    ')

    --SELECT * FROM @groups order by id

    select @max-2 = MAX(id) from @groups

    select @i = 0

    while @i < @max-2 begin

    select @i = @i + 1

    select @actgrp = '<domain>' + grp, @distinguishedName = distinguishedName from @groups

    WHERE id = @i

    SELECT @sql = 'select sAMAccountName, ''' + @actgrp + ''' from OPENROWSET(''ADSDSOObject'', ''adsdatasource'';''<domain\user>'';''<password>'',

    ''SELECT givenName, SN, Mail, info, sAMAccountName

    FROM ''''LDAP://<ads server name>/DC=<subdomain>,DC=<domain>,DC=<net>''''

    where objectCategory = ''''Person'''' and objectClass = ''''User'''' and SN = ''''*'''' and sAMAccountType=805306368 and not ''''userAccountControl:1.2.840.113556.1.4.803:''''=2 AND memberOf = ''''' + @distinguishedName + ''''' '')'

    insert @usrs (usr, grp) EXEC(@sql)

    end

    select * from @usrs

    Best regards
    karl