修改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.输入:“l