Поделиться через


Контроллер домена Windows Server 2008 и более поздней версии возвращает только 5000 значений в ответе LDAP

В этой статье описывается решение проблемы, из-за которой контроллер домена Windows Server 2008 R2 или более новый контроллер домена возвращает только 5000 значений для ответа LDAP.

Исходный номер базы знаний: 2009267

Симптомы

Приложение LDAP может возвращать меньше сведений, если запрос отправляется в контроллер домена Windows Server 2008 или Windows Server 2008 R2, чем при отправке на контроллер домена Windows Server 2003. Результаты запроса могут отображаться усеченными или неполными. В некоторых случаях вы не можете получить никаких результатов. Например, если приложение LDAP запрашивает членов группы, контроллер домена Windows Server 2008 R2 или Windows Server 2008 возвращает только 5000 членов, а контроллеры домена Windows Server 2003 возвращают много других членов. В обоих случаях можно реализовать один и тот же расширенный параметр политики LDAP в NTDSUTIL, необходимый для приложения LDAP. Дополнительные сведения о просмотре параметров политики LDAP щелкните следующий номер статьи, чтобы просмотреть статью в Базе знаний Майкрософт:

315071 Просмотр и настройка политики LDAP в Active Directory с помощью Ntdsutil.exe

Образец вывода:

Политика ldap: отображение значений

Политика Current(New)

MaxPoolThreads 4
MaxDatagramRecv 4096
MaxReceiveBuffer 10485760
InitRecvTimeout 120
MaxConnections 5000
MaxConnIdleTime 900
MaxPageSize 50000
MaxQueryDuration 120
MaxTempTableSize 10000
MaxResultSetSize 262144
MinResultSets 0
MaxResultSetsPerConn 0
MaxNotificationPerConn 5
MaxValRange 25000

Примечание.

На обоих контроллерах домена параметр MaxPageSize имеет значение 50000 (по умолчанию 1000), а MaxValRange — 25000 (по умолчанию — 1500).

Причина

Внутренние ограничения LDAP появились в Windows Server 2008 R2 и Windows Server 2008, чтобы предотвратить перегрузку контроллера домена. Эти ограничения перезаписывают параметр политики LDAP, если значение политики должно быть выше.

Параметр LDAP максимальное значение (жестко закодированное)
MaxReceiveBuffer 20971520
MaxPageSize 20000
MaxQueryDuration 1200
MaxTempTableSize 100000
MaxValRange 5000

Поэтому действующий параметр для приведенной выше политики LDAP — MaxPageSize=50000 и MaxValRange=25000 на контроллере домена Windows Server 2003, как настроено в политике LDAP, но на контроллере домена Windows Server 2008 R2 или Windows Server 2008 жесткие ограничения диктуют MaxPageSize=20000 и MaxValRange=5000.
MaxValRange влияет на количество атрибутов, возвращаемых для запроса. Если вы выполняете запрос LDAP для элемента с несколькими значениями атрибута для объекта группы с более чем 5000 членами, контроллер домена Windows Server 2008 R2 или Windows Server 2008 возвращает только 5000 из них.

Решение

Новые максимальные ограничения, введенные в Windows Server 2008 R2 и Windows Server 2008, пытаются применить сообщение о том, что приложения должны применяться к политикам AD. Необходимо соответствующим образом адаптировать приложение LDAP. Для ограничения MaxValRange можно рассмотреть следующие сведения и примеры MSDN для использования диапазонных запросов: получение значений атрибутов диапазона https://msdn.microsoft.com/library/cc223242(PROT.10).aspx
В следующем примере кода используется диапазон для извлечения членов группы с помощью интерфейса IDirectoryObject: Пример кода для диапазонов с IDirectoryObject https://msdn.microsoft.com/library/aa705923(VS.85).aspx
В следующем примере кода используется диапазон для извлечения членов группы с помощью интерфейса IDirectorySearch: Пример кода для диапазонов с IDirectorySearch https://msdn.microsoft.com/library/aa705924(VS.85).aspx
Для MaxPageSize рекомендуется использовать страничные запросы, описанные в MSDN следующим образом: Результаты поиска по страницам https://msdn.microsoft.com/library/aa367011(VS.85).aspx
Функция ldap_create_page_control https://msdn.microsoft.com/library/aa366547(VS.85).aspx
Существует способ переопределить эти ограничения, но мы рекомендуем обсудить требования с технической поддержкой майкрософт, чтобы решить, является ли изменение политик правильным подходом.

Дополнительная информация

Дополнительные сведения о политиках LDAP см. в политиках LDAP https://msdn.microsoft.com/library/cc223376(PROT.10).aspx