AdamSync 定期崩溃。在故障排除中,我们发现当它遇到它认为是空的 DN 时会抛出异常。我使用存储在 ADLDS 配置中的 dirsync cookie 重放了查询。转储返回的值,我发现以下对象:
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 编辑、AD 管理中心、AD Explorer、PowerShell 查询(全部使用已删除/回收的过滤器、扩展和标志)。我们认为,自 dirsync 查询中指定的日期以来,它可能已命中其墓碑并由垃圾收集器处理。如果是这样,是否会继续返回属性更改记录?无限期?如果它没有被垃圾收集器处理,为什么我们找不到它?
由于该值而导致的 AdamSync 崩溃似乎是次要影响或完全不同的问题。
如果您运行 DirSync LDAP 查询而不指定要返回的任何属性,则它会返回任何已更改的对象。如果您启用了 Active Directory 回收站,则当对象转换到回收状态(如原始问题中列出的属性所示)时,状态更改将导致 DirSync 发送带有 isRecycled = True 对象的条目。
在与一位 MS Premier 工程师合作后,我们发现 AdamSync 在返回 DirSync 结果后对对象进行了第二次请求。如果用于运行 AdamSync 可执行文件的帐户仅配置了“复制目录更改”权限,则 AdamSync 无法读取返回的对象,因为没有读取回收对象的权限。这导致第二次查找的 DN 为 NULL,从而导致 AdamSync 因未处理的异常而崩溃。
存在两种解决方案:禁用 AD 回收站或修改 AdamSync LDAP 查询以排除 isRecycled = TRUE 的对象:
请注意,“TRUE”必须大写。
MS Premier 表示 AdamSync 处于“原样”状态,未处理的异常不太可能被修补。