2009-01-02 7 views
3

Je cherche à interroger AD via ldap à partir de SQL Server 2005, mais l'erreur suivante:requêtes AD du serveur SQL 2005

Msg 7321, niveau 16, état 2, ligne 1 Une erreur est survenue lors de la préparation du requête "SELECT NAME, MAIL FROM" LDAP: /// CN = foo, CN = Utilisateurs, DC = bar, DC = com "" pour l'exécution contre le fournisseur OLE DB "ADsDSOObject" pour le serveur lié "ADSI".

Ceci est après l'exécution de ce qui suit proc stocké:
exec sp_addlinkedserver 'ADSI', 'Active Directory Services 2.5', 'ADsDSOObject', 'adsdatasource'

Actuellement, je suis en cours d'exécution de la requête sur mon SQL locale Server 2005 instance. J'ai essayé de changer le contexte de sécurité à 1) Made Without ..., 2) fait en utilisant le courant de la connexion ..., et 3) Être fait en utilisant ce contexte de sécurité: en spécifiant mon propre compte de domaine. Même erreur avec les trois.

Je ne sais pas si c'est important, mais "bar" (voir la requête ldap ci-dessus) n'est pas le domaine de ma machine (instance de serveur sql locale) ou du serveur ldap.

Des idées?

Répondre

5

Le problème principal est que les guillemets autour de la requête LDAP doivent être doublés de guillemets simples.

La requête LDAP peut inclure un nom de serveur ou une adresse IP et/ou une spécification LDAP.

Certaines requêtes qui travaillent pour moi:

SELECT * FROM OPENQUERY 
(ADSI,'SELECT NAME FROM ''LDAP://*ldap.server.name*''') 

SELECT * FROM OPENQUERY 
(ADSI, 'SELECT name, sAMAccountName, distinguishedName 
FROM ''LDAP://DC=*mycompany*, DC=*mytld*'' 
WHERE objectCategory = ''Person'' AND objectClass = ''user''') 

SELECT * FROM OPENQUERY 
(ADSI,'SELECT name, sAMAccountName, distinguishedName 
FROM ''LDAP://*ldap.server.name*/OU=ITDept, OU=users, OU=DC, OU=Corporate, DC=*mycompany*, DC=*mytld*'' 
WHERE objectCategory = ''Person'' AND objectClass = ''user''') 

... Encore une fois, il n'y a pas de guillemets doubles dans ce qui précède ... multiple simple citations

ADSI doit être enregistré/lié à

EXEC sp_addlinkedserver 'ADSI', 'Active Directory Service Interfaces', 'ADSDSOObject', 'adsdatasource' 

si vous disposez des autorisations des questions que vous pouvez définir le compte utilisé sous l'onglet propriété de sécurité sur le ADSI lié au serveur.