L'interrogation LDAP à partir de SQL Server problème
Je vais avoir quelques difficultés à configurer une instruction SQL à exécuter une fonction openquery sur LDAP à partir de SQL Server. J'ai suivi les instructions énoncées ici: L'interrogation Active Directory à partir de SQL Server 2005 mais j'ai un peu de mal à mettre la dernière morceaux ensemble.
Tout d'abord, je ne savais pas où mon serveur LDAP a été. J'ai donc fait une nslookup
et trouvé le serveur par défaut:
abc.domain.popo.local
J'ai configuré mon OPENQUERY
comme
SELECT * FROM OPENQUERY( ADSI, 'SELECT * FROM ''LDAP://DC=abc,DC=domain,DC=popo,DC=local'' WHERE
objectCategory = ''User''')
Cependant, je reçois un message d'erreur indiquant que
Une erreur s'est produite lors de la préparation de la requête "SELECT * from 'LDAP://CC=abc,DC=domaine,DC=popo,DC=local " OÙ objectCategory = "Utilisateur" ou "" pour exécution à l'encontre du fournisseur OLE DB "ADSDSOObject" du serveur lié "ADSI".
Quel est le problème ici? Suis-je configurer le DC
de manière incorrecte (parce que je ne sais même pas ce que DC veut dire)? Ou est-il plus probable que je viens d'avoir le mauvais serveur LDAP?
OriginalL'auteur Rondel | 2011-12-06
Vous devez vous connecter pour publier un commentaire.
Il me semble que vous essayez de requête à l'encontre d'un Windows Active Directory (qui fonctionnellement apparaît comme LDAP). Par défaut, l'ANNONCE ne sera pas autoriser les connexions anonymes de l'interrogation - vous avoir à s'authentifier de confiance avec un nom d'utilisateur et mot de passe. Aussi, vous devez vérifier auprès de votre administrateur de système pour vous assurer d'avoir la bonne valeur de base ("DC=abc,DC=domaine,DC=popo,DC=local").
Je ne suis pas sûr, mais je serais surpris si vos informations d'identification sont transmises, tout le chemin à travers. Paramètre les informations d'identification explicitement aurait quelque chose à essayer, au moins.
Ce pourrait-il être. Je ne pense pas que la sécurité pour le serveur lié a jamais été mis en place. Je dois obtenir un Admin pour vérifier les propriétés du serveur lié
Si il est dans SQL SSMS avec l'Authentification Windows, il n'y a rien de plus qui doit être fait à moins que les Administrateurs de Domaine ont verrouillé AD. Un basique de l'utilisateur dans l'AD a les autorisations par défaut pour lire tout à fait un peu d'attributs et de propriétés. Anonyme - bien sûr - qu'ils sont bloqués par défaut (même si vous pouvez définir dsheuristics, etc pour l'ouvrir)
Il s'avère que c'était un problème d'identification. Le serveur lié n'était pas configuré correctement
OriginalL'auteur Jake Feasel
Voir Richard Mueller, la ADO /SQL conseils de recherche - ils vous aider? (Richard du site est un véritable trésor de LDAP et Active Directory, des références et des conseils - hautement recommandé!)
De ce que j'ai vu sur ce site, vous pourriez avoir la mauvaise
objectCategory
- essayez d'utiliserPerson
au lieu deUser
(qui je crois est unobjectClass
):qu'essayez-vous de choisir?? Peut-être que vous devez sélectionner à partir d'un autre point de départ, par exemple
'SELECT * FROM ''LDAP://CN=Users,DC=domain,DC=popo,DC=local'' WHERE objectCategory = ''User'''
ou quelque chose comme ça....Droit maintenant, je suis en train d'essayer d'obtenir quelque chose d'informations, je peux à partir d'active directory pour les Utilisateurs, mais en fin de compte je ne veux displayNames et noms d'utilisateur.
OriginalL'auteur marc_s
Assurez-vous que "abc" n'est pas le nom d'un contrôleur de domaine dans ce domaine; par conséquent, dans ce cas, votre OPENQUERY doit omettre que et être:
SELECT * FROM OPENQUERY( ADSI, 'SELECT * FROM ''LDAP://DC=domain,DC=popo,DC=local'' WHERE objectCategory = ''Person'' AND objectClass = ''user''')
Oui, vous devriez être en utilisant un "sans serveur bind" en tant que meilleure pratique; sinon, vous seriez le ciblage d'un contrôleur de domaine spécifique - si le serveur tombe en panne, vos requêtes échouent
OriginalL'auteur Quantum Elf