2009-06-29 12 views
6

Sto eseguendo un comando ADODB recordset.open() con una query LDAP per ottenere tutti gli utenti dalla mia Active Directory.Recordset che restituisce solo 1000 record

Ci sono circa 2600 utenti, ma sto recuperando solo 1000 di loro.

Ho provato a modificare le proprietà PageSize e MaxRecords del recordset senza fortuna.

Senza roba estranea, questo è ciò che il codice è simile (ho fatto i dettagli della connessione generici):

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); 

E 'sicuramente solo di tornare 1000 record, (ho confermato), e posso accedervi bene.

Nel caso in cui sia utile, la ragione per cui non sto utilizzando DirectorySearcher è perché è così lento in confronto a questo.

risposta

2

Il limite di 1000 è discusso here - in sostanza, è fissato presso il server, in modo che stai andando ad avere bisogno di parlare con il proprietario ...

+0

Sono abbastanza sicuro che tu possa impostarlo dalla query - l'ho fatto usando VBScript con command.Execute before. È solo che non riuscivo a farlo funzionare. – ChristianLinnell

+0

Ci siamo imbattuti in questo esatto problema, e abbiamo finito per richiedere agli utenti della pagina in base al cognome in modo che i singoli set fossero inferiori a 1000. Non è una soluzione ideale, ma ha funzionato attorno a questa limitazione. – SqlRyan

Problemi correlati