排查 AD 复制错误 8333:找不到目录对象

本文介绍 Active Directory 复制失败并出现错误 8333:找不到目录对象(ERROR_DS_OBJ_NOT_FOUND)。

原始 KB 数: 2703708

现象

本文介绍 Active Directory 复制失败并出现错误 8333 时的症状、原因和解决方法步骤:找不到目录对象(ERROR_DS_OBJ_NOT_FOUND)。

  1. 错误的可能格式包括:

    十进制 Hex 符号 错误字符串
    8333 0x208d ERROR_DS_OBJ_NOT_FOUND 找不到目录对象。
  2. 可以记录以下事件

    事件来源 事件 ID 事件字符串
    NTDS 复制 2108 此事件包含以前记录的 1084 事件的 REPAIR PROCEDURES。 此消息指示此复制目标上 Active Directory 数据库的一致性存在特定问题。 将复制的更改应用于以下对象时发生数据库错误。 数据库具有意外的内容,从而阻止进行更改。 对象:OU=TestOU,DC=contoso,DC=com 对象 GUID: <GUID> 源域控制器:A52b57e3-92b9-4264-822b-72963eaf1030._msdcs.contoso.com其他数据主错误值:找不到 8333 Directory 对象。 次要错误值:-1601 JET_errRecordNotFound,找不到密钥

    NTDS General
    2031 找不到 DS 服务配置对象。 它可能被意外删除。 Active Directory 能够正常运行,但无法设置某些服务参数,例如 LDAP 限制、默认查询策略和 SPN 映射。 DS 服务配置对象:CN=Directory 服务,CN=Windows NT,CN=Services,CN=Configuration,DC=contoso,DC=com 错误: 8333 (找不到目录对象。用户操作:尝试还原 DS 服务配置对象。
  3. 可能有来自 repadmin /replsum

    未找到 DC-1-03 03h:14m:11s 1 / 52 1 (8333) Directory 对象。
    未找到 DC-2-01 03h:13m:39s 1 / 26 3 (8333) Directory 对象。
    未找到 DC-3-09 03h:08m:45s 2 / 103 1 (8333) Directory 对象。
    未找到 DC-4-03 03h:05m:52s 1 / 13 7 (8333) Directory 对象。

  4. 提升新域控制器时 DCPromo 可能会失败,DCPROMO 日志中会出现以下错误

    <DateTime> [INFO] 创建新的域用户、组和计算机对象
    <DateTime> [INFO] 错误 - 安装后 Active Directory 缺少重要信息,无法继续。 如果这是副本域控制器,请将此服务器重新加入域。 (8333)
    <返回的 8333 的 DateTime> [INFO] NtdsInstall contoso.com
    <DateTime> [INFO] DsRolepInstallDs 返回 8333
    <DateTime> [ERROR] 无法安装到目录服务 (8333)

    注意

    错误 8333 转换为ERROR_DS_OBJ_NOT_FOUND或“找不到目录对象”。

  5. 尝试重新托管全局目录上的分区时

    repadmin /rehost \<dc-name>\<partition to rehost>\<good source>

    repadmin /rehost failed with DsReplicaAdd failed with status 8333 (0x208d)

原因

错误状态 8333“找不到目录对象”有多个根本原因,包括:

  1. 数据库损坏,源域控制器事件日志中记录的其他关联错误:

    Source 事件 ID 描述
    NTDS 复制 2108 此事件包含以前记录的 1084 事件的 REPAIR PROCEDURES。 此消息指示此复制目标上Active Directory 域服务数据库的一致性存在特定问题。 将复制的更改应用于以下对象时发生数据库错误。 数据库具有意外的内容,从而阻止进行更改。对象:CN=chduffey,OU=IT,OU=Corp,DC=contoso,DC=com
    对象 GUID: <GUID>
    源域控制器:c4efaf4e-d652-4630-8623-afec5ebc8532._msdcs.contso.comAdditional Data
    主错误值:找不到 8333 Directory 对象。
    NTDS General 1168 发生错误 -1073741790(c0000022) (内部 ID 3000b3a)。 请联系Microsoft产品支持服务获取帮助。
    Microsoft-Windows-
    ActiveDirectory_DomainService
    1084 内部事件:Active Directory 无法通过从以下源域控制器接收的更改更新以下对象。 这是因为在对域控制器上的 Active Directory 进行更改期间发生了错误。
    NTDS 复制 1699 本地域控制器未能检索为以下目录分区请求的更改。 因此,无法在以下网络地址将更改请求发送到域控制器。 8446 复制操作未能分配内存

    此外,可能会看到复制状态代码:

    代码 Sources 其他信息
    8451 Repadmin、DcPromo 作为数据库损坏事件中的子代码 如果识别了此错误,请参阅第一个实例中 8451 的故障排除指南。

    2645996
  2. 记录了关联错误的挥之不去的对象:

    Source 事件 ID 说明
    NTDS 复制 1988 Active Directory 复制遇到以下分区中已从本地域控制器 (DC) Active Directory 数据库中删除的对象。 并非所有直接复制或可传递复制合作伙伴在删除前的逻辑删除生存期天数都经过。 从 Active Directory 分区中删除和垃圾回收的对象仍存在于同一域中其他 DC 的可写分区中,或者林中其他域中全局目录服务器的只读分区称为“挥之不去的对象”。
    NTDS 复制 1388 另一个域控制器(DC)尝试将此 DC 复制到此 DC 中,该对象在本地 Active Directory 数据库中不存在。 该对象可能已被删除,并且已回收垃圾(自删除对象以来的墓碑生存期或更多时间)已在此 DC 上。 更新请求中包含的属性集不足以创建对象。 将使用完整的属性集重新请求该对象,并在此 DC 上重新创建。

    此外,你可能会看到以下复制状态代码:

    Source 来源 说明
    8,606 NTDS 复制事件中的 Repadmin、DCPromo、子代码 如果识别了此错误,请参阅第一个实例中 8606 的故障排除指南。 2028495
    1722 NTDS 复制事件中的 Repadmin、DCPromo、子代码 如果识别了此错误,请参阅第一个实例中 1722 的故障排除指南。 2102154
  3. 冲突对象

  4. 第三方进程

    1. 防病毒
    2. 目录同步软件

解决方法

调查 8333“找不到目录对象”错误消息应在复制合作关系中的源域控制器上开始。 在参考本文档的“原因”部分中问题的每个可能原因时,支持专业人员应开始调查源/目标复制合作关系的来源。

  1. 检查 Active Directory (JET) 数据库损坏的指示:

    1. 查看源和目标复制合作伙伴上的目录服务事件日志,了解 JET 数据库损坏事件。 可能的事件包括:

      Source 事件 ID 描述
      NTDS 复制 2108 此事件包含以前记录的 1084 事件的 REPAIR PROCEDURES。 此消息指示此复制目标上Active Directory 域服务数据库的一致性存在特定问题。 将复制的更改应用于以下对象时发生数据库错误。 数据库具有意外的内容,从而阻止进行更改。对象:CN=chduffey,OU=IT,OU=Corp,DC=contoso,DC=com
      对象 GUID: <GUID>
      源域控制器:c4efaf4e-d652-4630-8623-afec5ebc8532._msdcs.contso.comAdditional Data
      主错误值:找不到 8333 Directory 对象。
      NTDS General 1168 发生错误 -1073741790(c0000022) (内部 ID 3000b3a)。 请联系Microsoft产品支持服务获取帮助。
      Microsoft-Windows-
      ActiveDirectory_DomainService
      1084 内部事件:Active Directory 无法通过从以下源域控制器接收的更改更新以下对象。 这是因为在对域控制器上的 Active Directory 进行更改期间发生了错误。
      NTDS 复制 1699 本地域控制器未能检索为以下目录分区请求的更改。 因此,无法在以下网络地址将更改请求发送到域控制器。 8446 复制操作未能分配内存

      此外,可能会看到复制状态代码:

      代码 Sources 其他信息
      8451 Repadmin、DcPromo 作为数据库损坏事件中的子代码 如果识别了此错误,请参阅第一个实例中 8451 的故障排除指南。

      2645996
    2. 启用高级目录服务复制日志记录:

      重要

      此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,按以下步骤操作时请务必谨慎。 作为额外保护措施,请在修改注册表之前先将其备份。 如果之后出现问题,您就可以还原注册表。 有关如何备份和还原注册表的详细信息,请单击下面的文章编号,查看相应的 Microsoft 知识库文章:
      322756 如何备份和还原 Windows 中的注册表

      若要增加 NTDS 诊断日志记录,请将以下REG_DWORD值更改为以下注册表项下的目标域控制器注册表中的值:
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics
      将以下子项的值设置为 5:
      5 个复制事件
      9 内部处理
      请注意,级别 5 日志记录非常详细,问题解决后,这两个子项的值应重新设置为默认值 0。 应筛选目录服务事件日志以隔离和标识这些事件。

    3. 查看从增加的日志记录中为错误值生成的新事件的事件日志,这些错误值将提供数据库损坏的明确视图。

    4. 如果检测到数据库损坏,请确保林中每个域存在最近的备份。

    5. 重启在目录服务还原模式下报告数据库损坏的域控制器。 (记者)服务器重启时 F8,或者如果无法执行此操作,请打开msconfig.exe并在启动选项中选择 Active Directory 修复

    6. 若要在目录服务还原模式下检查数据库,请执行以下操作:

      1. 打开命令提示符
      2. 键入 ntdsutil
      3. 键入 activate instance ntds
      4. 键入 Semantic database analysis
      5. 键入 go

      如果检测到错误,它们会显示到控制台,并写入当前工作目录中的日志文件。

    7. 如果检测到数据库损坏错误,建议联系Microsoft 支持部门服务。

      注意

      若要在目录服务还原模式下执行数据库检查后正常启动域控制器,bcdedit /deletevalue safeboot请从提升的命令提示符键入该命令或打开msconfig.exe并清除启动选项中的“安全启动”框。

    8. 最后一个选项。 你可以降级域控制器,并再次升级它,以替换数据库并从域中的另一台服务器复制内容。

      注意

      如果环境中的 Active Directory 数据库已损坏,请务必考虑损坏源以避免将来出现问题。 此类损坏的一些已知原因包括:

      1. 硬件故障:硬盘或控制器
      2. 缓存:硬盘控制器
      3. 过时的驱动程序:硬盘控制器
      4. 过期固件:BIOS、硬盘控制器、硬盘
      5. 突然断电
  2. 检查林中所有域控制器上是否存在和删除挥发对象。

    有多种方法可用于检查挥发对象,包括:

    1. 检查林中域控制器上是否存在以下目录服务事件:

      Source 事件 ID 说明
      NTDS 复制 1988 Active Directory 复制遇到以下分区中已从本地域控制器 (DC) Active Directory 数据库中删除的对象。 并非所有直接复制或可传递复制合作伙伴在删除前的逻辑删除生存期天数都经过。 从 Active Directory 分区中删除和垃圾回收的对象仍存在于同一域中其他 DC 的可写分区中,或者林中其他域中全局目录服务器的只读分区称为“挥之不去的对象”。
      NTDS 复制 1388 另一个域控制器(DC)尝试将此 DC 复制到此 DC 中,该对象在本地 Active Directory 数据库中不存在。 该对象可能已被删除,并且已回收垃圾(自删除对象以来的墓碑生存期或更多时间)已在此 DC 上。 更新请求中包含的属性集不足以创建对象。 将使用完整的属性集重新请求该对象,并在此 DC 上重新创建。

      此外,你可能会看到以下复制状态代码:

      代码 Sources 其他信息
      8451 Repadmin、DcPromo 作为数据库损坏事件中的子代码 如果识别了此错误,请参阅第一个实例中 8451 的故障排除指南。

      2645996
    2. 检查林中是否存在挥之不去的对象。

      检测和删除挥发对象的首选方法是使用 Lingering Object Liquidator v2 (LoLv2)。

      有关 LoLv2 的详细信息,请参阅:

      在某些情况下,无法使用 LoLv2,可以使用 Repadmin.exe。 可以通过在公告模式下运行repadmin /removelingeringobjects命令来执行此操作,如标识挥之不去的对象中所述

  3. 检查是否存在并删除冲突对象:
    a. 搜索 CNF 托管对象的相关目录分区,以及冲突管理的对象与以下语法冲突的对象:

    repadmin /showattr localhost "dc=parent,dc=com" /subtree /filter:"((&(objectClass=*)(cn=*\0acnf:*)))" /atts:objectclass,whencreated,whenchanged

    在此示例中,“dc=parent,dc=com”是域的 parent.com 可分辨名称。

    在大多数情况下,8333 错误将指示应针对冲突对象评估哪个目录分区。 建议在所有实例中检查配置分区:

    repadmin /showattr localhost "cn=configuration,dc=parent,dc=com" /subtree /filter:"((&(objectClass=*)(cn=*\0acnf:*)))" /atts:objectclass,whencreated,whenchanged

    b. 查看属性、属性值以及是否存在的从属对象,以确定应保留哪些对象以及应删除的对象

    c. 确保具有目录的最新备份

    d. 删除冲突管理的对象/容器或其与使用 LDP.EXE、ADSIEDIT 或 Active Directory 管理工具之一冲突的对象。

  4. 对删除了第三方组件的复制伙伴执行测试。
    已发现多个第三方产品导致此问题,包括:

    1. 防病毒软件
    2. 目录同步

数据收集

如果需要Microsoft支持方面的帮助,建议按照使用 TSS 收集 Active Directory 复制问题的信息中所述的步骤收集信息。

详细信息

挥之不去的对象:

清除凌乱对象的 Active Directory 林

数据库损坏:

事件 ID 1539 - 数据库完整性