Cómo hacer consultas de SQL Server a Active Directory
Como si no tuviera nada útil que hacer, voy a dedicarme ahora a mostrar cómo guardar y trabajar con SQL Server y Active Directory.
Active Directory es una base de datos del Sistema operativo Windows que guarda información corporativa de usuarios, teléfonos, direcciones, impresoras, carpetas compartidas, etc.
En muchos casos, la gente desea importar la información de Active Directory en bases de datos. En este caso, les voy a enseñar cómo hacer consultas de SQL Server a Active Directory.
El primer paso, es crear un linked server. Este es un link que hace SQL Server con otras bases de datos. Con SQL Server puedo hacer consultas a Access, Oracle, MySQL, etc. En este caso desde SQL Server voy a hacer es conectarme y crearme un link de SQL Server a Active Directory.
En SQL Server Management Studio ejecuto las siguientes sentencias:
EXEC sp_addlinkedserver 'ADSI', 'Active Directory Services 2.5',
'ADSDSOObject', 'adsdatasource'
GO
He creado un linked server llamado ADSI que se conecta a Active Directory.
El siguiente paso es habilitar la opción para hacer consultas distribuidas. Para eso hay que habilitar las opciones avanzadas primero y luego habilitar la opción indicada:
sp_configure 'show advanced options', 1
reconfigure with override
sp_configure 'Ad Hoc Distributed Queries', 1
reconfigure
Ahora vamos a mostrar a los usuarios del contenedor Users de Active Directory, del dominio contoso.com
SELECT [Name], SN [Last Name], ST State
FROM OPENQUERY( ADSI,
'SELECT Name, SN, ST
FROM ''LDAP://ADSISrv/ CN=Users,DC=contoso,DC=com''
WHERE objectCategory = ''Person'' AND
objectClass = ''contact''')
SELECT * FROM OpenQuery(ADSI, 'SELECT * FROM ''LDAP://OU=marketing,DC=contoso,DC=com'' WHERE objectCategory=''user'' ')
En este siguiente ejemplo estoy creando una tabla llamada ListaUsuarios y le estoy pasando los datos de Active Directory.
SELECT *
INTO ListaUsuarios
FROM OpenQuery(ADSI, 'SELECT name,
mail, logonHours,pwdLastSet,creationTime,
forceLogoff,lockoutDuration,
lockOutObservationWindow,displayName,
userPrincipalName
FROM ''LDAP://OU=Marketing,DC=contoso,DC=com'' WHERE objectCategory=''user'' ')
Entendiste el artículo ?, te perdiste ?, esto era chino ?, 不明白嗎?,muy fácil ?, escribe tus comentarios y dudas a este blog.
Saludos
ResponderEliminarMuy util la informacion pero si quisiera hacer lo mismo pero con MySQL en vez de SQL Server como debo hacerlo?
Gracias
Lo mío es SQL Server no MySQL. Tal vez usando algún programa en c# pueda lograrlo.
ResponderEliminarHOLA QUIERO HACER CONSULTAS DE SQL SERVER 2008 R2 A ACTIVE DIRECTORY
ResponderEliminarY USAR LOS DATOS PARA AGREGARLOS EN UN DOCUMENTO AUTOMATIZADO
QUE DATOS SE CAMBIAN CON TU MÉTODO PARA REALIZAR MI CONEXION?
LDAP://OU=marketing,DC=contoso,DC=com'
ResponderEliminarEn este ejemplo, el dominio se llama contoso.com
Y la unidad organizacional marketing.
Esos datos cambialos a tus necesidades.
EXEC sp_addlinkedserver 'ADSI', 'Active Directory Services 2.5',
ResponderEliminar'ADSDSOObject', 'adsdatasource' que se refiere con esos datos ?
tengo mi AD ws2008 r2 y quiero pasar mis clientes a una BD sql 2008 PARA ahi hacer las consultas. agradeceria tu ayuda
Debería funcionarle la sentencia tal y como esta, sin cambiarle nada. Tiene algún problema ?
ResponderEliminarEXEC sp_addlinkedserver 'ADSI', 'Active Directory Services 2.5',
'ADSDSOObject', 'adsdatasource'
GO
Buenas Noches, quisiera saber si con active directory se puede restringir acceso de datos en tablas por perfil de usuarios.
ResponderEliminarGracias de antemano
Juan Quezada, no se si entendí bien. Quieres restringir acceso a tablas SQL Server importadas de active directory ?
ResponderEliminar¡Muchas gracias, me ha servido!
ResponderEliminar