2009-06-29 18 views
6

Ich mache einen ADODB recordset.open() Befehl mit einer LDAP-Abfrage, um alle Benutzer aus meinem Active Directory zu erhalten.Recordset gibt nur 1000 Datensätze zurück

Es gibt ungefähr 2600 Benutzer, aber ich bekomme nur 1000 von ihnen zurück.

Ich habe versucht, die Eigenschaften PageSize und MaxRecords des Recordsets ohne Glück zu ändern.

ohne fremde Sachen, das ist, was der Code wie folgt aussieht (ich die Verbindungsdetails generic gemacht haben):

ADODB.Connection conn = new ADODB.Connection(); 
ADODB.Recordset rs = new ADODB.Recordset(); 
rs.MaxRecords = 10000; 
rs.PageSize = 10000; 
conn.Open("Active Directory Provider","","",0); 
string query = "SELECT cn FROM 'LDAP://OU=User Accounts,OU=TopLevel,DC=domainName,DC=local' where samAccountName = '*'" 

rs.Open(query, conn, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic, -1); 

Es ist definitiv nur 1000 Datensätze zurückkehrte, (ich habe bestätigt), und ich kann Greife auf sie zu.

Wenn es hilft, ist der Grund, warum ich nicht DirectorySearcher verwenden, weil es ist so langsam im Vergleich dazu.

Antwort

2

Die 1000er Grenze here diskutiert - im Wesentlichen ist es auf dem Server festgelegt, so dass Sie gehen an den Eigentümer sprechen müssen ...

+0

Ich bin mir ziemlich sicher, dass Sie es aus der Abfrage setzen können - ich habe es mit VBScript mit command.Execute vorher getan. Es ist nur, dass ich das nicht funktionierte. – ChristianLinnell

+0

Wir sind genau auf dieses Problem gestoßen, und wir mussten die Benutzer basierend auf dem Nachnamen sortieren, so dass die einzelnen Sätze weniger als 1000 waren. Es ist keine ideale Lösung, aber es hat diese Einschränkung umgangen. – SqlRyan

Verwandte Themen