LDAP Abfrage bringt nur max. 1000 Datensätze zurück

dobPh

Mitglied
Hallo,

ich habe ein kleines Problem.
Und zwar mache per vb.net eine ldap abfrage auf ein Active Directory. Das funktioniert auch wunderbar nur habe ich jetzt festgestellt, dass nur die ersten 1000 Datensätze zurückkommen.
Ich habe schon versucht es mit .maxRecords zu Regeln aber leider klappt das nicht wirklich.

nachfolgend ein kleiner Teil meiner Abfrage:

Code:
' Abfrage zusammen setzen
         strQuery = strBase & ";" & strFilter & ";" & strAttr & ";" & strDepth
         Debug.Print(strQuery)

'Verbindung öffnen
         conn = CreateObject("Adodb.connection")
         conn.Open("Data Source=Active Directory Provider;Provider=ADsDSOObject")

'Query ausführen
         'rs.MaxRecords = 10000 <--- funktioniert leider nicht
         rs = CreateObject("ADODB.Recordset")
         rs = conn.Execute(strQuery)
         anzahl = rs.RecordCount - 1
         ProgressBar1.Maximum = anzahl

So weit ich bei msdn gelesen habe funktioniert das setzen von maxRecords nur auf Datenbankabfragen. Kann das sein? Gibt es noch eine andere Möglichkeit, wie ich wirklich alle Datensätzen bekommen kann?

Vielen Dank im Voraus
Philipp
 
Hallo Norbert,

ich habe den Code leider nicht hier (bin gerade auf Arbeit), aber das ist das was ich noch im Kopf habe. Es wird eine Suche nach Gruppen in der Domaine gemacht. Die Domaine hat aber weit über 1000 Gruppen, das heißt wenn in die Textbox nichts eingetragen wird sollten theoretisch alle Gruppen zurückkommen. Es kommen aber wie gesagt nur die ersten 1000 zurück.

Code:
'Pfad der gegenwärtigen Domäne einholen
  Set Root = GetObject("LDAP://rootDSE")
  strDomain = Root.Get("defaultNamingContext")
  Set Domain = GetObject("LDAP://" & strDomain)
    
  'ou setzen
  OU = "" 'wird nur ab und zu gebraucht
  
  'ou einbinden
  strDomain = OU & strDomain
  Set Domain = GetObject("LDAP://" & strDomain)
  
  ' LDAP Base DN setzen
  strBase = "<" & Domain.ADsPath & ">"
    
  'Anfangsbuchstabe der Gruppe um Ergebnissmenge zu verkleinern
  aB = TextBox1.Value
  ' Filter auf die Kategorie Gruppen setzen
  strFilter = "(&(objectClass=group)(name=" & aB + "*))"
  
  ' Attribut setzen
  strAttr = "name"

  ' Suchtiefe setzen
  strDepth = "subTree"

' Abfrage zusammen setzen
         strQuery = strBase & ";" & strFilter & ";" & strAttr & ";" & strDepth
         Debug.Print(strQuery)

'Verbindung öffnen
         conn = CreateObject("Adodb.connection")
         conn.Open("Data Source=Active Directory Provider;Provider=ADsDSOObject")

'Query ausführen
         'rs.MaxRecords = 10000 <--- funktioniert leider nicht
         rs = CreateObject("ADODB.Recordset")
         rs = conn.Execute(strQuery)
         anzahl = rs.RecordCount - 1
         ProgressBar1.Maximum = anzahl

Vielen Dank für deine Mühen,
Philipp
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück