2009-06-29 4 views
6

LDAP 쿼리와 함께 ADODB recordset.open() 명령을 사용하여 Active Directory에서 모든 사용자를 가져옵니다.Recordset 만 1000 레코드를 반환합니다.

약 2600 명의 사용자가 있지만 그 중 1000 개만 돌려 받고 있습니다.

행운을 빌어 레코드 세트의 PageSize 및 MaxRecords 속성을 변경해 보았습니다. 불필요한 물건없이

,이 코드가 (나는 일반적인 연결 세부 사항을했습니다) 모습입니다 :

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

그것은 확실히 유일한 (내가 확인했습니다), 1000 개 개의 레코드를 반환, 그리고 내가 할 수있는 그들을 잘 접근하십시오.

도움이 될 경우 DirectorySearcher를 사용하지 않는 이유는 이므로 느린입니다.

답변

2

1000 제한 here 설명 - 본질적으로, 그것은 당신이 소유자에게 말할 필요 해요, 그래서 서버에 고정 ...의

+0

나는 당신이 질의로부터 그것을 설정할 수있을 것이라고 확신한다 - 전에 command.Execute로 VBScript를 사용하여 해왔다. 그것은 내가 그 일을 할 수없는 것입니다. – ChristianLinnell

+0

이 정확한 문제가 발생하여 성을 기준으로 사용자를 페이지해야만 개별 세트가 1000 개 미만이되었습니다. 이상적인 솔루션은 아니지만이 제한 사항을 해결했습니다. – SqlRyan