Sas ldaps_搜索超出了LDAP服务器大小限制(MSAD)

Sas ldaps_搜索超出了LDAP服务器大小限制(MSAD),sas,ldap,Sas,Ldap,使用 使用Microsoft Active Directory时,我收到警告:已超过LDAP服务器大小限制 在sas中是否有一种翻页方式 例如,我用sizeLimit=2000尝试了ldaps\u setOptions,但仍然生成了警告,我猜这是在微软方面设置的 谢谢 样本: call ldaps_search(handle,shandle,filter, attrs, num, rc); 从客户端控制LDAP服务器sizelimit是不可能的(请参阅AD),但是您仍然可以通过解决这个问题 其

使用

使用Microsoft Active Directory时,我收到警告:已超过LDAP服务器大小限制

在sas中是否有一种翻页方式

例如,我用sizeLimit=2000尝试了
ldaps\u setOptions
,但仍然生成了警告,我猜这是在微软方面设置的

谢谢

样本:

call ldaps_search(handle,shandle,filter, attrs, num, rc);

从客户端控制LDAP服务器sizelimit是不可能的(请参阅AD),但是您仍然可以通过解决这个问题

其思想是请求分页结果集,每页的条目数小于服务器的MaxPageSize限制

SAS提供了调用ldaps\u search\u页面例程,该例程只为给定的搜索请求返回一个页面,并要求后续调用检索全部结果:



对于那些在
more
中遇到问题的人来说,如果被固定在1,则会导致上面的代码永远循环(我不知道为什么引用不会得到更新,但OP是在这种情况下),实际上你不需要它,增加一个计数器,直到获取的条目数达到num为止,应该可以做到这一点

您好,尝试了您的建议(在上面的问题中添加了示例代码),但更多的代码仍然保持为1,因此永远不会退出循环?嗯。。它永远保持在1?它应该取决于num,比如num/pageSize生成后续调用的数量,直到more等于0(它应该作为引用传递)。你在说什么?您是否检查了分页控件是否实际工作(不依赖SAS,请直接参阅AD config或使用-E选项的ldapsearch)?在一个我知道有404个对象的测试OU上,尝试了dsquery和分页,工作正常,只需在调试器中逐步执行代码,如果我将限制设置为100并运行,我可以看到shandle增加,num返回4个批次或100,1个批次或4,但更多的仍然是1,然后在6号重新启动,我将永远获得4 100和1 4。所以看起来th分页正在工作,但只是没有更新更多,而不是1?谢谢这很奇怪。。如果没有更新更多,只需增加一个计数器,直到获取的条目数达到num.coolio,我在do之前将num设置为1000,然后在num=1000时设置do,然后在最终结果出现num 1000并退出do:)
more = 1;
do while (more eq 1);
call ldaps_search_page(handle, shandle, filter, attrs, num, rc, more, 1000);
  if rc ne 0 then do;
 more = 0;
 msg = sysmsg();
 put msg;
  end;
/* free search results page */
if shandle NE 0 then do;
call ldaps_free(shandle,rc);
end;
end;
CALL LDAPS_SEARCH_PAGE(lHandle, sHandle, filter, attr, num, rc, more <, pageSize>);
more = 1;
do while (more eq 1);
call ldaps_search_page(handle, shandle, filter, attrs, num, rc, more, 50);
...
/* free search results page */
  if shandle NE 0 then do;
  call ldaps_free(shandle,rc);
  end;
end;