2009-05-05 6 views
0

Très bien, j'ai déjà une connexion existante à Active Directory sur mon serveur. Je sais que l'interrogation du répertoire actif fonctionne. Ce que je veux être en mesure de faire est de rechercher tous les membres et/ou les groupes dans le répertoire actif, et aussi de trouver les utilisateurs appartenant à ces groupes/ous.Groupes Active Directory avec SQL Server 2005

c'est la requête en cours qui tire simplement les informations utilisateur (ou une partie d'une procédure stockée mis en place pour tirer tous les utilisateurs):

SELECT 
    userAccountControl, 
    DisplayName AS [NAME], 
    givenName AS FIRSTNAME, 
    middleName, 
    sn AS LASTNAME, 
    employeeID AS EMPID, 
    telephoneNumber AS EXT, 
    Title, 
    Department AS DEPT, 
    Division, 
    sAMAccountName AS UserName, 
    mail AS Email, 
    homeDirectory AS HomeDir, 
    userPrincipalName AS LOGON, 
    manager 
FROM   OPENQUERY(ADSI, 
         ' 
select 
    userAccountControl, 
    DisplayName, 
    givenName, 
    middleName, 
    sn, 
    employeeID, 
    telephoneNumber, 
    Title, 
    Department, 
    Division, 
    sAMAccountName, 
    mail, 
    homeDirectory, 
    userPrincipalName, 
    manager 
from ''LDAP://name'' 
where sn > ''a'' 
    and sn <''h'' 
order by DisplayName 
') 
AS derivedtbl_1 

Répondre

1

Êtes-vous conscient du fait que vous ne pouvez pas interroger plus d'objets que la Serveur AD est prêt à retourner dans une réponse?

Le fournisseur SQL ADSI ne prend pas en charge la pagination via les résultats. Le serveur AD est généralement configuré pour renvoyer les premiers 1000 résultats uniquement.

Si vous interrogez virtuellement tous les objets AD à la fois, vous risquez fort d'atteindre cette limite.

Pouvez-vous clarifier ce que vous essayez d'atteindre?

+0

"C'est la requête courante qui tire juste l'information d'utilisateur (ou une partie d'une procédure stockée configurée pour tirer tous les utilisateurs):" le sp de ceci a 5 instructions d'insertion/sélection qui vont dans une table de temp est comparé à une table sur notre entrepôt de données db et met à jour la table – DForck42

+0

fondamentalement notre annonce a plusieurs groupes différents, IT, QA, contrôle de documents, etc Je veux être en mesure de voir quels groupes il y a dans la publicité et ce que les utilisateurs appartiennent quel groupe. – DForck42

+0

Je ne pense pas que SQL soit tout à fait le bon outil pour en savoir plus sur les appartenances aux groupes ou pour mapper tous les utilisateurs du répertoire sur une table. Je recommande d'utiliser une couche de programmation entre AD et base de données et ne pas utiliser SQL pour interroger l'AD. C'est possible (et tentant) mais peut s'avérer plus douloureux qu'utile sur la route. – Tomalak