2011-02-03 59 views
9

¿Cómo extraería la información de Active Directory (Nombre de usuario, nombre, apellido) y llenaría una tabla SQL con los resultados?Datos de Active Directory en la tabla SQL

Muchas gracias

de Scott

+0

¿Qué idioma (programación) está usando /¿¿Yendo por?? –

Respuesta

3

Si está en .NET 3.5, usaría el nuevo espacio de nombre System.DirectoryServices.AccountManagement para esto.

aprender acerca de él aquí:

Managing Directory Security Principals in the .NET Framework 3.5

Básicamente, se había instalado un contenedor (un PrincipalContext) y luego enumerar los usuarios que desea tratar. Pasa el cursor por esos y extrae la información que necesitas, y envíala a SQL Server.

5

La forma de hacer esto para un gran ambiente AD :

  1. proceso por lotes nocturno que corre AdFind (herramienta gratuita) para ejecutar una consulta LDAP y lo descarga a archivos CSV
  2. BCP (herramienta de línea de comandos SQL incorporada) para importar a granel los archivos CSV en tablas de importación en la base de datos SQL
  3. Procedimiento almacenado (ejecutado con osql) para tomar los datos de la tabla de importación y agregar/actualizar registros en las tablas principales

Retratamos 145k usuarios, 80k grupos, 130k computadoras de 10 dominios en aproximadamente 2 horas de principio a fin. Esto incluye extraer información precisa de LastLogon para los usuarios y las computadoras, lo que requiere que aciertes cada controlador de dominio. Sin eso, el proceso tarda unos 30 minutos.

4

Si sólo se necesita en SQL, estoy usando el código de abajo

INSERT... 
SELECT A.SAMAccountName, A.Mail, A.displayName FROM 
    (SELECT * FROM OpenQuery(ADSI, 'SELECT title, displayName, sAMAccountName, givenName, telephoneNumber, facsimileTelephoneNumber, sn, userAccountControl,mail 
    FROM ''LDAP://domain.ro/DC=domain,DC=ro'' where objectClass = ''User''') 
    WHERE (sn is not null) and (givenName is not null) and (mail is not null))A 

donde ADSI es un servidor vinculado creado en base a esto: http://msdn2.microsoft.com/en-us/library/aa772380(VS.85).aspx

+4

ADSI le devuelve no más de 1000 registros en una sola consulta, después de eso informará un error – binball

+0

y ADSI no puede manejar atributos multivalor, al consultar un campo con varios valores también fallará. – 1010

Cuestiones relacionadas