修改LDAP查询默认1000条限制
修改LDAP查詢默認1000條限制
公司的一個項目要從AD上取數據,為了測試性能,批量在AD上創建了2000多個用戶。但是用java程序獲取所有用戶的時候會報錯或者只能取到1000條數據。
用com.novell.ldap.LDAPConnection.search()方法查詢的時候最多返回1000條數據。
用org.springframeworre.LdapTemplate.search()方法的時候會拋出異常。
org.springframework.ldap.SizeLimitExceededException Caused by: javax.naming.SizeLimitExceededException
和C#的同事看了半天也找不出原因。用C#程序去取數據的時候也只能取到1000條數據,ldap browser這樣的工具也只能返回1000條結果,這個時候我們判斷是服務器的問題。
第二天在網上找的“AD 1000”的相關資料。原來windows2000(2003) server本身出于性能負荷的考慮,將LDAP查詢的數量限制為1000個。
當某個ldap查詢條件返回數據大于1000條數據的時候,就會報SizeLimitExceededException 的異常!
這里可以參考微軟官網的說法:
實際應用中AD中數據超過1000太正常不過了!如果服務器性能允許而且網絡帶寬不錯的話,這樣的限制就很不合理。那么如何修改呢?
1.在“開始”——>“運行”——>輸入“ ntdsutil”——>回車;
2.輸入:“ldap policies”,回車;
3.輸入:“connections”,回車;
4.輸入:“connect to domain yourDomainName”,例如(connect to domain baidu.com)
5.連接提示出現后,輸入:“quit”,回車;
6.輸入:“show values”,確認當前的最大返回數;(默認是1000)
7.輸入:“set MaxPageSize to 10000”,將最大返回數改為10000。(最大返回數可以根據實際情況自行定義)。
8.再度輸入:“show values”,確認當前的最大返回數(顯示為:1000(10000))。
9.輸入“commit changes”以確認修改。
10. 再次輸入:“show values”,確認當前的最大返回數為10000。
11. 輸入“quit”,退出設置狀態;
12. 輸入“quit”,退出當前命令。
然后在用java程序去訪問,就可返回2000多個用戶!
如果你的java程序還是返回1000條記錄,記得修改一下代碼。
LDAPSearchConstraints constraints = new LDAPSearchConstraints(); constraints.setMaxResults(2000); LDAPSearchResults results = conn.search("dc=xxx,dc=com",LDAPConnection.SCOPE_SUB, filter,attrs,false,constraints);
完工!
備注:客戶端(java程序)也可以設置返回結果的數量,但這是為了不影響帶寬的情況下設置的。如果設置的值大于服務端設置的值,那么依然沒有效果!
下面把具體操作步驟用圖片形式展示在這里!
注:該文檔為轉載文檔,轉載位置為http://www.educity.cn/wenda/364099.html
轉載于:https://blog.51cto.com/guozhengyuan/1438334
總結
以上是生活随笔為你收集整理的修改LDAP查询默认1000条限制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android中隐藏光标
- 下一篇: jquery效果 窗口弹出案例