2009-02-10 7 views
1

Je peux configurer un gestionnaire de connexions qui utilise le fournisseur OLE de Directory Services et pointe vers l'un de nos contrôleurs de domaine. Ensuite, dans la zone Flux de données, je crée une source OLE DB et définissez le mode d'accès aux données sur "Commande SQL".Comment utiliser le fournisseur OLE DB pour les services d'annuaire dans un projet SQL Server Integration Services?

J'utilise ensuite cette requête pour extraire des données à partir d'Active Directory:

Select employeeid, sAMaccountName 
From 'LDAP://MyCompany.com' 
Where objectClass = 'user' 
    and objectClass = 'Person' 
    and objectClass <> 'Computer' 

Si je parse la requête, il dit qu'il parse correctement. Si j'ouvre le Générateur de requêtes, cela me donne cette erreur. Je clique ensuite sur OK et ouvre le Générateur de requêtes où je peux exécuter la requête avec succès et obtenir des résultats à partir de l'ANNONCE. Cependant, lorsque je tente de cliquer sur OK pour appliquer les modifications ou aller dans la vue Colonnes, je reçois cette erreur:

Error at Data Flow Task [OLE DB Source 1 [941]]: An OLE DB error has occurred. Error code: 0x80040E21.

ADDITIONAL INFORMATION: Exception from HRESULT: 0xC0202009 (Microsoft.SqlServer.DTSPipelineWrap)

J'ai aussi essayé d'installer la source DB en utilisant la commande « SQL à partir variable » mode d'accès . J'ai mis en place une variable chaîne avec la valeur étant la requête ... mais cela me donne la même erreur.

Parce que l'erreur est si générique, je n'arrive pas à trouver une description de ce qui est réellement faux.

Est-ce que quelqu'un sait comment utiliser avec succès le fournisseur OLE DB pour Microsoft Direcotry Services? Et/ou quelqu'un sait-il une meilleure façon de le faire à l'intérieur de SSIS?

Répondre

4

Si vous avez nommé "ADSI" le serveur lié (votre fournisseur Active Directory OLE DB), voici essentiellement ce que vous avez besoin:

SELECT samAccountName, 
     employeeID 
FROM OPENQUERY(ADSI, 
    'SELECT samAccountName, employeeID 
    FROM ''LDAP://MyCompany.com'' 
    WHERE objectClass=''Person'' 
    AND objectClass = ''User'' 
    AND NOT objectClass = ''Computer''') 
Questions connexes