AdamSync периодически дает сбой. При устранении неполадок мы обнаружили, что он выдает исключение, когда встречает то, что считает пустым DN. Я воспроизвел запрос, используя файл cookie dirsync, хранящийся в конфигурации ADLDS. Сбрасывая возвращенные значения, я нахожу следующий объект:
CN=SCCM Site Server\0ADEL:0b9efaf1-24cc-46a1-92ff-f6aa74254d3e,CN=Deleted Objects,DC=appd,DC=appstate,DC=edu
description
objectguid 0b9efaf1-24cc-46a1-92ff-f6aa74254d3e
instancetype 4
isrecycled TRUE
Насколько мы можем судить, этого объекта больше не существует. Мы не можем найти его с помощью любой из наших инструментов: Пользователи и компьютеры, LDP, ADSI Edit, AD Admin Center, AD Explorer, запросы PowerShell (все с использованием удаленных / переработанных фильтров, расширений и флагов). Мы сочли, что он мог попасть в свою надгробную плиту и был обработан сборщиком мусора с даты, указанной в запросе dirsync. Если это так, будет ли по-прежнему возвращаться запись об изменении атрибута? Бесконечно? Если это не имеет обработано сборщиком мусора, почему мы не можем его найти?
Сбой AdamSync из-за значения кажется вторичным эффектом или другой проблемой в целом.
Если вы запустите LDAP-запрос DirSync без указания каких-либо возвращаемых атрибутов, он вернет все измененные объекты. ЕСЛИ у вас включена корзина Active Directory, когда объект переходит в повторно используемое состояние (на что указывают атрибуты, перечисленные в исходном вопросе), изменение состояния приведет к тому, что DirSync отправит запись с объектом, для которого isRecycled = True.
После работы с инженером MS Premier мы обнаружили, что AdamSync выполняет второй запрос объекта после возврата результатов DirSync. Если учетная запись, используемая для запуска исполняемого файла AdamSync, настроена только с разрешением «Репликация изменений каталога», AdamSync не может прочитать возвращенный объект из-за отсутствия разрешения на чтение переработанных объектов. Это приводит к тому, что DN второго поиска становится NULL, что приводит к аварийному завершению работы AdamSync с необработанным исключением.
Существует два решения: отключить корзину AD Recycling Bin или изменить LDAP-запрос AdamSync, чтобы исключить объекты, для которых isRecycled = TRUE:
(&(<ldap_filter>)(!(IsRecycled=TRUE))
Обратите внимание, что «ИСТИНА» должно быть написано с заглавной буквы.
MS Premier указывает, что AdamSync находится в состоянии «как есть», и необработанное исключение вряд ли будет исправлено.