如何在 dcpromo 的复制阶段对 "内部错误" 消息进行故障排除

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

原始产品版本:   Windows Server 2019、Windows Server 2016、Windows Server 2012 R2
原始 KB 数:   265090

备注

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

摘要

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

在以下任一情况下可能会发生此问题:

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

    如果存在具有幻像父级的活动 (或已删除) 对象,Active Directory 将暂时接受 live 对象,因为其复制要求不符合顺序。 如果父对象具有子对象,则磁盘清理过程(如垃圾回收)不应能够将已删除的对象转换为幻像。 Windows 2000 Service Pack 2 (SP2) 中的 Ntdsa.dll 文件可防止在目录服务中发生这种情况。 但是,此文件不会修复已发生的问题。

  • 使用 Windows Server 2003 或 Ntdsutil 工具的更高版本时,可以使用 权威性还原 命令。 Ntdsutil.exe 增加 Active Directory 中指定的容器和子对象的 USN。 Ntdsutil.exe 的测试版可能会错误地增加丢失和找到的容器的 USN。 如果在本地目录服务中创建容器之前复制了 "丢失的" 和 "已找到" 容器的对象,则会报告以下事件:

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

    若要避免这种情况,"丢失的" 和 "找到的" 容器通常是复制的第一个容器中的一个。

在正常或管理员启动的 Active Directory 复制过程中,现有 Active Directory 域控制器上也会发生内部错误。

如何对此错误消息进行故障排除

请按以下步骤操作:

  1. 使用 Active directory 安装向导) 时,请使用网络监视器、事件日志或 Dcpromo 查找正在 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 密钥从源服务器导出到要升级的计算机 (例如,.reg) 。 将文件复制到在发生复制时遇到内部错误的计算机上。 如果在运行 Active Directory 安装向导时发生 "内部错误",请将 .reg 文件复制到问题域控制器上的桌面,以便可以轻松地启动该文件。

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

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

    警告

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

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

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

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

    CN = Directory Service、CN = Windows NT、CN = Services、CN = Configuration、DC = root domain、DC = COM

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

    注释 在等待两天以删除逻辑删除的对象后,您可能需要在重新启动域控制器之前等待额外的60分钟或更长时间,然后再继续垃圾收集过程。 9. 在源域控制器上启动垃圾回收。 找到并单击以下注册表项:

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

    编辑以下值:

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

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

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

    repadmin/showmeta ">" 的已删除对象的 GUID "<" GUID

    如果您收到 "无此对象" 消息,则已成功删除该对象,并且您现在可以成功地运行 Active Directory 安装向导。 如果对象尚未完成垃圾收集过程,则应为 theisDeletedattribute 的元数据。 与 theisDeletedattribute 相关联的时间戳为删除时间。 验证删除时间是否至少为两天前设置,例如:

    repadmin/showmeta " <GUID=b2d605a4-b9e6-4505-ba59-895e91a9a7b> "

  10. 解决此问题后,将诊断日志记录级别重置为 0 ,并将 tombstone 生存时间设置回以前的状态,或者完全删除该值以提示计算机使用默认值。 TheTombstoneLifetimesetting 在定义系统状态和 Active Directory 备份的有用生命周期中至关重要。 WhenTombstoneLifetimeis 设置为 2,早于两天的备份磁带不可用。 任何已停机两天或更多天的域控制器都必须从备份中还原或重新安装。

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

事件类型:信息事件源: NTDS 复制事件类别:复制事件 ID:1240日期: MM/DD/YY 时间: HH: MM: SS AM |PM 用户: S-1-5-21-1151542997-2719369742-1698538726-500 计算机: computer_source 描述:属性 0) (对象 CN = "NTDS Settings DEL: 51c6913c-9221-4ac4-8513-9155dd7e15ad"、CN = "ZA9902000 DEL: 37eabd48-bc98-483f-b2fd-9c8869e9c3ce"、CN = Servers、CN = Bull、CN =、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 描述:内部事件:异常 e0010002 发生时参数8442和 20a0 (内部 ID 11003a1) 。

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

MM/DD HH: MM: SS [INFO] 复制 CN = Configuration,DC = win2ktest,DC = A,DC = com:收到 917 out of 1783 对象。 MM/DD HH: MM: SS [INFO] 复制 CN = Configuration,DC = win2ktest,DC = A,DC = com:收到 1049 out of 1783 对象。 MM/DD HH: MM: SS [INFO] 复制 CN = Configuration,DC = win2ktest,DC = A,DC = com:收到 1181 out of 1783 对象。 MM/DD HH: MM: SS [INFO] 复制 CN = Configuration,DC = win2ktest,DC = A,DC = com:收到 1200 out of 1783 对象。 MM/DD HH: MM: SS [INFO] 错误-目录服务无法从远程服务器 computer_source 中复制分区 CN = Configuration、DC = test、DC = A、DC = com。 (8442) MM/DD HH: MM: SS [INFO] NtdsInstall for 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 ". ... \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 = 计算机、DC = test、DC = A、DC = com