AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Active Directory Ldap Abfrage Limit umgehen
Thema durchsuchen
Ansicht
Themen-Optionen

Active Directory Ldap Abfrage Limit umgehen

Ein Thema von mxh · begonnen am 31. Jan 2012 · letzter Beitrag vom 31. Jan 2012
Antwort Antwort
mxh

Registriert seit: 31. Jan 2012
2 Beiträge
 
#1

Active Directory Ldap Abfrage Limit umgehen

  Alt 31. Jan 2012, 11:18
Hallo Delphi-Praxis,
ich weiß das Thema ist nicht neu und es gibt schon einige Einträge im Forum. Leider konnte ich das Problem nicht lösen.

Ich möchte gern alle Benutzer aus der AD auslesen. Leider bekomm ich nur 1000 Einträge vom Server zurückgeliefert. Ich weiß das dieses Limit vom Server ausgeht da dieser aus "Performancegründen" nur diese Anzahl zurückliefert.
Weil das Limit auf dem Server nicht geändert werden kann (möchte der Administrator nicht ) hab ich versucht mit PageSize die Anfrage zu limitieren. Das hat leider nicht funktioniert. Jetzt weiß ich nicht mehr weiter.

Ich benutze für die die Abfrage eine TADOConnection und TADOQuery beidesmal Komponenten die auf der Form liegen.


Dann führe ich folgenden Code aus :

Delphi-Quellcode:

 ADOConnection1.Connected := false;
  Fdomain := edDomain.Text;
  Fdomain := 'DC=' + StringReplace(Fdomain,'.', ',DC=', [rfReplaceAll, rfIgnoreCase]);
  ADOConnection1.ConnectionString := Format( 'Provider=ADsDSOObject;Password=%s;User ID=%s;Encrypt Password=False;Mode=Read;Bind Flags=0;ADSI Flag=-2147483648', [edPasswort.Text, edName.Text + '@' + eddomain.Text] );
  ADOConnection1.Connected := True;
  ADOQuery1.Close;
  ADOQuery1.SQL.Text := 'SELECT SN, Displayname,sAMAccountName, department FROM ' + QuotedStr('LDAP://'  + edserver.Text + '/'  +Fdomain ) + ' WHERE objectClass=' + QuotedStr('user') + ' AND objectCategory=' + QuotedStr('Person') ;
  Try
    ADOQuery1.Open;
    ADOQuery1.Recordset.PageSize:= 100;
  Except
    on e :exception do
    ShowMessage(e.Message);
  End;
Die "PageSize" hat überhaupt keinen Einfluss auf mein Ergebnis da der Recordcount der Query1 immer 1000 ist.

Hoffe ihr könnt mir helfen , danke im Vorraus
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Active Directory Ldap Abfrage Limit umgehen

  Alt 31. Jan 2012, 11:37
Also bei so einem Parameter, der ja direkt das Ergebnis (hier die Menge) beeinflusst würde ich immer erwarten das dieser vor dem Öffnen gesetzt werden muss.

Ansonsten gibt es über die Forensuche http://www.delphipraxis.net/89728-ld...h-mit-ado.html
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Active Directory Ldap Abfrage Limit umgehen

  Alt 31. Jan 2012, 11:41
Du willst alles Datensätz:.

1, Ergänze ein order by und sortiere die Ergebnismenge nach einer (eindeutigen) Spalte

2, Baue eine 2te Abfrage die eine where-Bedingung mit diesem Kriterium hat und dessen werte dem letzten zurückgelieferten Datensatz der ersten abfrage entspricht.

3, Wiederhole 2te Abfrage bis du alle Datensätze hast.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mxh

Registriert seit: 31. Jan 2012
2 Beiträge
 
#4

AW: Active Directory Ldap Abfrage Limit umgehen

  Alt 31. Jan 2012, 12:03
Hi,
danke für die Antworten
zu #2 :
ich dachte auch das man den Parameter vor dem öffnen der Query setzen muss , als ich das probiert habe kam leider ein Fehler. Den Beitrag im Forum hab ich gelesen das hab ich ja auch umgesetzt mit der Zeile ADOQuery1.Recordset.PageSize:= 100;

zu #3 :
das hab ich schon probiert das Problem ist allerdings das alle 5000 Benutzer in der selben OU liegen und ich nicht mit geschachtelten Abfragen an die Benutzer komme.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz