首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

AD查询1000条限制和好决方案

2012-08-31 
AD查询1000条限制和解决方案?公司的一个项目要从AD上取数据,为了测试性能,批量在AD上创建了2000多个用户。

AD查询1000条限制和解决方案

?

公司的一个项目要从AD上取数据,为了测试性能,批量在AD上创建了2000多个用户。但是用java程序获取所有用户的时候会报错或者只能取到1000条数据。

?

用com.novell.ldap.LDAPConnection.search()方法查询的时候最多返回1000条数据。

用org.springframework.ldap.core.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?? 的异常!

这里可以参考微软官网的说法:?http://support.microsoft.com/kb/315071

?

?

实际应用中AD中数据超过1000太正常不过了!如果服务器性能允许而且网络带宽不错的话,这样的限制就很不合理。那么如何修改呢?

?

?

1.在“开始”——>“运行”——>输入“ ntdsutil”——>回车;

2.输入:“ldappolicies”,回车;

3.输入:“connections”,回车;

4.输入:“connect to domain yourDomainName”,例如(connect to domain baidu.com)

5.连接提示出现后,输入:“quit”,回车;

6.输入:“showvalues”,确认当前的最大返回数;(默认是1000)

7.输入:“set MaxPageSize to 10000”,将最大返回数改为10000。(最大返回数可以根据实际情况自行定义)。

8.再度输入:“showvalues”,确认当前的最大返回数(显示为:1000(10000))。

9.输入“commitchanges”以确认修改。

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程序)也可以设置返回结果的数量,但这是为了不影响带宽的情况下设置的。如果设置的值大于服务端设置的值,那么依然没有效果!

?

下面把具体操作步骤用图片形式展示在这里!

AD查询1000条限制和好决方案

?

AD查询1000条限制和好决方案

AD查询1000条限制和好决方案

?

AD查询1000条限制和好决方案

?

AD查询1000条限制和好决方案

?

?

AD查询1000条限制和好决方案

1 楼 qj200040 2012-03-31   文章不错,我来学习一下

热点排行