排查 dcpromo 复制阶段内部错误消息的问题

本文介绍如何排查在 Active Directory 安装向导(Dcpromo)复制阶段收到的内部错误。

原始 KB 编号: 265090

注意

家庭用户: 本文仅供技术支持代理和 IT 专业人员使用。 如果你正在寻找解决问题的帮助, 请询问Microsoft社区

总结

在升级期间,目录服务对象按架构、配置和域的更新序列号(USN)(低到高)的顺序进行复制。 当本地目录服务中不存在复制子对象的父容器时,可能会出现内部错误。

此问题可能发生在以下任一方案中:

  • 有一个实时对象,其父对象在过去被删除,父对象已过期并已转换为幻影。 因此,无法再复制子对象。ReplPrepareDataToShip父对象的 FillGuidAndSid 调用不成功,并且报告了错误(8352 = ERROR_DS_NOT_AN_OBJECT)。 此错误导致子对象的出站复制退出,并收到复制内部错误消息。

    如果存在具有虚拟父对象的实时(或删除)对象,Active Directory 会因无序复制要求而暂时接受实时对象。 如果父对象具有子对象,磁盘清理过程(如垃圾回收)不能将已删除的对象转换为虚拟对象。 从 Windows 2000 Service Pack 2(SP2)起Ntdsa.dll文件可防止目录服务中出现这种情况。 但是,此文件在已发生后不会修复该问题。

  • 使用 Windows Server 2003 或更高版本的 Ntdsutil 工具时,可以使用 权威还原 命令。 Ntdsutil.exe增加 Active Directory 中指定容器和子对象的 USN。 Ntdsutil.exe的 Beta 版本可能会错误地增加“丢失”和“发现”容器的 USN。 在本地目录服务中创建容器之前复制目标为“丢失”和“发现”容器的对象时,将报告以下事件:

    事件 1084:复制失败,出现内部错误

    为了避免这种情况,“丢失”和“发现”容器通常是复制的第一个容器之一。

在正常复制或管理员启动的 Active Directory 复制期间,现有 Active Directory 域控制器上也可能发生内部错误。

排查此错误消息的步骤

  1. 使用网络监视器、事件日志或Dcpromo.log查找在 Active Directory 复制期间使用的源服务器(使用 Active Directory 安装向导时)。

  2. 如果使用 Active Directory 安装向导并且存在多个潜在的复制伙伴,请使用 Active Directory 安装向导应答文件查找源服务器时出现此错误。 可能的源域控制器包括新子域的父域中的域控制器,或复制域控制器在同一域中的域控制器。 或者,如果特定源服务器可疑,请停止可疑计算机上的 Net Logon 服务,并从其他域控制器进行搜索。

  3. 在源服务器上,找到并单击以下注册表项:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NTDS\Diagnostics

    编辑以下值:

    • 9 内部处理:将诊断级别设置为 1。
    • 7 内部配置:将诊断级别设置为 3。
    • 5 个复制事件:将诊断级别设置为 3。
  4. 使用注册表编辑器将 \NTDS 密钥从源服务器导出到正在升级的计算机(例如,Ntds.reg)。 将文件复制到发生复制时遇到内部错误的计算机。 如果在 Active Directory 安装向导运行时发生内部错误,请将.reg文件复制到问题域控制器上的桌面,以便可以轻松启动该文件。

    或者,按 Windows 键+R,然后从聚焦于该文件的暂存资源管理器窗口中拖动.reg文件。 选择“确定,将.reg文件的内容添加到注册表。

  5. 当正在升级的计算机开始复制架构命名上下文时,请运行Ntds.reg文件来生成 \NTDS\Diagnostics 注册表项和设置。

    警告

    NTDS\Diagnostics 升级阶段不存在注册表项,必须在目标域控制器上手动创建。 NTDS\Diagnostics如果 Active Directory 安装向导运行时注册表项加载得太早,则会用默认值覆盖该密钥,并且不会记录任何事件。 对于现有域控制器,可以随时启用注册表设置。

  6. 检查源和目标服务器上的目录服务事件日志。 内部事件在源服务器上显示为事件 ID 1173。 查看在内部错误之前发生的 NTDS 复制事件,以查找要复制的对象的全球通用标识(GUID)。 (可能尝试重复复制同一对象)。 记录有问题的对象或容器的 GUID。

  7. 启动Ldp.exe、启动连接并绑定到源服务器。 在“浏览”菜单中,选择“删除”。 对于可分辨名称路径,请键入 <GUID=GUID#>,例如 <GUID=b2d605a4-b9e6-4505-ba59-895e91a9a7b5>。 将搜索范围设置为 Base,然后删除指定的 GUID。

  8. 使用Ldp.exe,将 TombstoneLifetime 属性的值设置为 2(删除逻辑删除对象前几天的值)。 TombstoneLifetime 位于以下可分辨名称路径中:

    CN=目录服务,CN=Windows NT,CN=Services,CN=Configuration,DC= 根域,DC=COM

    验证 TombstoneLifetime 属性是否存在并且其值为 2。 如果值小于 2,则该值无效,服务器使用默认值 60 天。 (还可以使用 ADSIEDIT 更改此属性。

    注意

    等待两天才能删除已删除的逻辑对象后,可能需要再等待 60 分钟或更长时间,然后重新启动域控制器并继续垃圾回收过程。

  9. 在源域控制器上启动垃圾回收。 找到并单击以下注册表项:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NTDS\Diagnostics key

    编辑以下值:

    • 6 垃圾回收:将诊断级别设置为 3。
    • 9 内部处理:将诊断级别设置为 1。

    若要强制垃圾回收,请重启域控制器。 重启域控制器后,垃圾回收应运行 15 分钟。 诊断级别现在记录目录服务事件日志中的垃圾回收事件。

  10. 若要验证对象是否已删除,请运行以下命令:

    repadmin /showmeta "<"GUID for deleted object">"
    

    如果收到消息:没有此类对象,则对象已被成功删除,现在可以成功运行 Active Directory 安装向导。 如果对象尚未经历垃圾回收过程,则应有 isDeleted 属性的元数据。 与 isDeleted 属性关联的时间戳是删除时间。 验证是否至少在两天前设置了删除时间,例如:

    repadmin /showmeta "<GUID=b2d605a4-b9e6-4505-ba59-895e91a9a7b>"
    
  11. 解决此问题后,将诊断日志记录级别重置为 0 ,并将逻辑删除生存期重新设置为以前的情况,或删除该值以提示计算机使用默认值。 TombstoneLifetime 设置对于定义系统状态和 Active Directory 备份的使用寿命至关重要。 当 TombstoneLifetime 设置为 2 时,超过两天的备份磁带不可用。 任何已关闭两天或更多天的域控制器都必须从备份还原或重新安装。

以下文本是源和目标服务器上的目录服务事件日志中报告的事件的示例:

事件类型:信息事件源:NTDS 复制事件类别:复制事件 ID:1240 日期:MM/DD/YY 时间:HH:MM:SS AM|PM 用户:S-1-5-21-1151542997-2719369742-1698538726-500 计算机:computer_source说明:属性 0(objectClass) object CN=“NTDS Settings DEL:51c6913c-9221-4ac4-8513-9155dd7e15ad”,CN=“ZA9902000 DEL:37eabd48-bc9 8-483f-b2fd-9c8869e9c3ce”,CN=Servers,CN=Bull,CN=Sites,CN=Configuration,DC=mma,DC=fr (GUID 51c6913c-9221-4ac4-8513-9155dd7e15ad) 将发送到 DSA 6abec3d1-3054-41c8-a362-5a0c5b7d5d71。

事件类型:警告事件源:NTDS 常规事件类别:内部处理事件 ID:1173 日期:MM/DD/YY 时间:HH:MM:SS AM|PM 用户:S-1-5-21-1151542997-2719369742-1698538726-500 计算机:computer_source说明:内部事件:参数 8442 和 20a0 发生异常 e0010002(内部 ID 11003a1)。

在正在升级的计算机上的 Active Directory 安装向导日志中报告以下文本。 在此示例Dcpromo.log文件中,正在升级的计算机 \\computer_promoted 在 Active Directory 安装向导中遇到“内部错误”(从 \\computer_source 进行溯源)。 请注意在复制三个命名上下文之一(“复制系统遇到内部错误”)时发生的错误 8442。 此示例显示配置命名上下文上发生错误:

MM/DD HH:MM:SS [INFO] 复制 CN=Configuration,DC=win2ktest,DC=A,DC=com: 接收了 917 个 1783 个对象中的 917 个。
MM/DD HH:MM:SS [INFO] 复制 CN=Configuration,DC=win2ktest,DC=A,DC=com:接收了 1783 个对象中的 1049 个。
MM/DD HH:MM:SS [INFO] 复制 CN=Configuration,DC=win2ktest,DC=A,DC=com:接收了 1783 个对象中的 1181 个。
MM/DD HH:MM:SS [INFO] 复制 CN=Configuration,DC=win2ktest,DC=A,DC=com: 接收了 1200 个 1783 个对象中的 1200 个。
MM/DD HH:MM:SS [INFO] 错误 - 目录服务无法从远程服务器computer_source.test.a.com复制分区 CN=Configuration,DC=test,DC=A,DC=com。 (8442)
MM/DD HH:MM:SS [INFO] NtdsInstall 返回 test.a.com 的 8442
MM/DD HH:MM:SS [INFO] DsRolepInstallDs 返回 8442
MM/DD HH:MM:SS [错误] 无法安装到目录服务 (8442)
MM/DD HH:MM:SS [INFO] 启动服务 NETLOGON
MM/DD HH:MM:SS [INFO] 将服务 NETLOGON 配置为 2 返回 0
MM/DD HH:MM:SS [INFO] 搜索计算机帐户forcomputer_promotedon \computer_source.test.a.com...
MM/DD HH:MM:SS [INFO] 配置服务器帐户
MM/DD HH:MM:SS [INFO] NtdsSetReplicaMachineAccount 返回 0
MM/DD HH:MM:SS [INFO] 尝试移动 accountcomputer_sourceto CN=GAXGPTS01,CN=Computers,DC=test,DC=A,DC=com