2009-05-05 19 views
0

In Ordnung, also habe ich bereits eine bestehende Verbindung zu Active Directory auf meinem Server. Ich weiß, dass die Abfrage von Active Directory funktioniert. Was ich tun will, ist die Abfrage aller Benutzer und/oder Gruppen im Active Directory, und auch die Benutzer zu finden, die zu diesen Gruppen gehören.Active Directory-Gruppen mit SQL Server 2005

Dies ist die aktuelle Abfrage, die nur Benutzerinformationen zieht (oder ein Teil einer gespeicherten Prozedur einrichten, um alle Benutzer zu ziehen):

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 

Antwort

1

Sind Sie sich der Tatsache bewusst, dass Sie nicht mehr Objekte als die abfragen AD-Server ist bereit, in einer Antwort zurückzukehren?

Der ADSI-SQL-Anbieter unterstützt das Paging durch die Ergebnisse nicht. Der AD-Server ist normalerweise so konfiguriert, dass nur die ersten 1000 Ergebnisse zurückgegeben werden.

Wenn Sie praktisch alle AD-Objekte auf einmal abfragen, werden Sie sehr wahrscheinlich dieses Limit erreichen.

Können Sie klarstellen, was Sie erreichen möchten?

+0

"Dies ist die aktuelle Abfrage, die nur Benutzerinformationen (oder einen Teil einer gespeicherten Prozedur, die alle Benutzer ziehen) erstellt:" der SP das ist von hat 5 einfügen/Select-Anweisungen, die dann in eine temporäre Tabelle gehen wird mit einer Tabelle in unserem Data Warehouse db verglichen und aktualisiert die Tabelle – DForck42

+0

grundsätzlich unsere Anzeige hat mehrere verschiedene Gruppen, IT, QA, Dokumentenkontrolle, etc. Ich möchte in der Lage zu sehen, welche Gruppen gibt es in der Anzeige und was Benutzer gehören welche Gruppe. – DForck42

+0

Ich glaube nicht, dass SQL das richtige Werkzeug ist, um Gruppenmitgliedschaften zu ermitteln oder alle Benutzer im Verzeichnis einer Tabelle zuzuordnen. Ich würde empfehlen, eine Programmierschicht zwischen AD und der Datenbank zu verwenden und nicht SQL zu verwenden, um das AD abzufragen. Es ist möglich (und verlockend), kann sich aber im weiteren Verlauf als schmerzhafter erweisen als nützlich. – Tomalak