域与目录服务

尝试运行 Active Directory 安装向导时(架构不匹配)错误消息(Dcpromo.exe) - Windows Server

· 52CE 我爱测

本文提供了修复错误“架构不匹配”的解决方法,当你尝试运行 Active Directory 安装向导(Dcpromo.exe)。 适用于: Windows Server 2012 R2原始 KB 数: 838179 现象 在运行“适用于”部分列出的Microsoft Windows 版本之一的计算机上运行 Active Directory 安装向导(Dcpromo.exe),可能会收到“架构不匹配”错误消息。 如果运行的Microsoft Windows

本文提供了修复错误“架构不匹配”的解决方法,当你尝试运行 Active Directory 安装向导(Dcpromo.exe)。

适用于: Windows Server 2012 R2原始 KB 数: 838179

现象

在运行“适用于”部分列出的Microsoft Windows 版本之一的计算机上运行 Active Directory 安装向导(Dcpromo.exe),可能会收到“架构不匹配”错误消息。

如果运行的Microsoft Windows Server 2003,可能会收到以下错误消息:

Active Directory 无法从源域控制器的远程域控制器完全限定的计算机名称复制分区**的目录分区 **DN 路径。 由于涉及的服务器之间的架构不匹配,复制操作失败。

如果运行的是 windows 2000 Microsoft,可能会收到以下错误消息:

目录服务无法从远程服务器远程服务器名称复制分区名称 。 由于涉及的服务器之间的架构不匹配,复制操作失败。

原因

如果满足以下条件之一,则可能会出现此问题:

  • 条件 1:源域控制器的 Active Directory 目录服务副本包含重复的多值属性。
  • 条件 2:源域控制器数据库中的一个或多个属性或页面已损坏。
  • 条件 3:源域控制器在其数据库中具有由于架构删除而未涵盖的属性。

解决方法

若要解决此问题,请使用以下两种方法之一。 方法 1 解决了条件 1 和条件 2。 方法 2 解决了条件 3。

方法 1:条件 1 和条件 2 的解析

“架构不匹配”错误消息具有误导性。 错误的根本原因可能与架构分区(CN)或其中的任何对象无关。 实际问题可能是数据库约束冲突,例如具有重复值的多值属性。

若要排查并解决此问题,请按照这六部分过程中的步骤操作。

第 1 部分:启用诊断日志记录

在源域控制器上启用诊断日志记录。 要设置部门,请按照以下步骤操作。

重要

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

322756 如何备份和还原 Windows 中的注册表

  1. 单击“开始”,再单击“运行”,键入“regedit& ”,然后单击“确定”。

  2. 找到并单击下面的注册表子项:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntds\Diagnostics

  3. 在右窗格中的“名称”列中,右键单击“5 个复制事件”注册表项,然后单击“修改”。

  4. 键入 5,然后单击“ 确定”。

  5. 对以下注册表项重复步骤 3 和步骤 4:

    • 7 内部配置
    • 8 目录访问
    • 9 内部处理
    • 24 DS 架构
  6. 在左窗格中,再次单击以下注册表子项:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntds\Diagnostics

  7. 在 “文件 ”菜单上,单击“ 导出”。

  8. **在“保存”**框中,在收到“架构不匹配”错误消息的计算机上打开管理员的“桌面”文件夹。 在 “文件名 ”框中,键入 Ntds_logging,然后单击“ 确定”。

    注意

    通常,管理员的桌面文件夹为 C:\Documents 和 Settings\Administrator\Desktop。 但是,系统驱动器号可能会有所不同。 若要查找计算机使用的系统驱动器,请执行以下步骤:

    1. 登录到收到“架构不匹配”错误消息的计算机。

    2. 单击“开始**”**,单击“运行”,键入命令,然后单击“确定”。

    3. 键入 集,然后按 Enter。

      以“SystemDrive=”开头的输出行显示系统使用的驱动器号。

    4. 键入 退出,然后按 Enter。

第 2 部分:强制 Active Directory 的入站复制

强制目标计算机从已启用 NTDS 诊断日志记录的域控制器执行 Active Directory 的入站复制。 如果有多个源域控制器,请确保从启用了诊断日志记录的源域控制器进行复制。 为此,请使用下列方法之一:

  • 使用“第 1 部分:启用诊断日志记录”部分中的步骤 1 到 5,增加 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntds\Diagnostics 所有可能的源域控制器的日志记录。

  • 停止所有可能的源域控制器上的 Net Logon 服务,除非在日志记录增加的“架构不匹配”错误中引用的源域控制器。 为此,请按照下列步骤进行操作:

    1. 单击“开始**”,指向“程序**”,指向**“管理工具**”,然后单击“服务”。
    2. 右键单击“Net Logon**”**,然后单击“停止”。
    3. 创建无人参与 的 Active Directory 安装向导 应答文件。
  • 在 报告启用了 NTDS 诊断日志记录的“架构不匹配”错误的目标计算机上运行 Active Directory 安装向导 。 NTDS 诊断日志记录的确切时间取决于正在升级的计算机是运行 Windows 2000 还是 Windows Server 2003。

    Active Directory 安装向导会影响以下 Windows 注册表项:

    • 运行 Windows 2000 或 Windows Server 2003 的帮助程序域控制器将保留注册表子项中的 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntds\Diagnostics 日志设置,直到 Active Directory 安装向导降级这些域控制器。
    • 正在升级的基于 Windows 2000 的计算机会在每次升级尝试开始时覆盖 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntds\Diagnostics 注册表子项。 一旦帮助程序域控制器的架构分区的入站复制开始预先填充HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntds\Diagnostics注册表子项,每次尝试升级基于 Windows 2000 的域控制器时,请双击Ntds_logging.reg。
    • 基于 Windows Server 2003 的计算机不会覆盖注册表子项中的 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntds\Diagnostics 预先存在的值。 但是,每次升级尝试失败后,都会删除现有设置。

第 3 部分:在目标域控制器上预填充注册表

在运行 Windows 2000 或 Windows Server 2003 的目标域控制器上预填充 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntds\Diagnostics 子项。 为此,请按照下列步骤进行操作:

  1. 在源域控制器上,按照“第 1 部分:启用诊断日志记录”部分中的步骤 1 到 5 进行操作。

  2. 右键单击以下注册表子项,然后单击“ 导出” :

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntds\Diagnostics

  3. **在“保存”**框中,打开正在升级的计算机上的管理员桌面文件夹。 在 “文件名 ”框中,键入 Ntds_logging,然后单击“ 确定”。

    注意

    若要查找桌面文件夹,请参阅步骤 8 的第 1 部分中的注释。

  4. 在目标域控制器上,根据正在升级的计算机是运行 Windows Server 2003 还是 Windows 2000,双击 在管理员的桌面文件夹中保存的Ntds_logging.reg 文件。

第 4 部分:查找任何重复的多值属性

  1. 检查源域控制器和目标域控制器上的目录服务事件日志,以查找问题对象。

  2. 在源域控制器上,查看目录服务事件日志,并记下已出站复制到正在升级的域控制器的最后一个对象和属性。 问题对象是目录服务事件日志中引用的最后一个对象或属性,或者是同一分区中具有下一个最高更新序列号(USN)的对象。 记录所引用对象的域名路径和复制的最后一个属性。 在源域控制器上,查找最后一个事件 1240。 在目标域控制器上,查找事件 1203。

  3. ldifde使用命令导出所引用的对象。 要执行此操作:

    1. 单击“开始**”**,单击“运行”,键入命令,然后单击“确定”。
    2. 键入以下内容,然后按 Enter: LDIFDE -f MISMATCH -d <domain name path of object referenced in event log of the source domain controller>
  4. 在记事本或其他文本编辑器中检查 ldifde 输出。 特别注意具有重复值的属性。 例如,以下截断示例包含具有重复值的属性:

msExchMonitoringResponses:: <Duplicate #1 W19fQ0xBU1M6c3RyKDE3KV1TTVRQRXZlbnRDb25zdW1lcltOb3RpZnlPbkVycm9yOnN0cigyKV0tMV> tSZXNwb25kVG9XaGljaE9iamVjdHM6c3RyKDEpXTBbT2JqZWN0c1RvUmVzcG9uZFRvOnN0cigwKV1b U01UUFNlcnZlcjpzdHIoNCldQUxFWFtUb0xpbmU6c3RyKDI1KV1yamtlbnZpbkBtZXRib2UuazEyLm 5qLnVzW01lc3NhZ2U6c3RyKDMxNyldJVRhcmdldEluc3RhbmNlLk5hbWUlIGhhcyByZXBvcnRlZCBh ICVUYXJnZXRJbnN0YW5jZS5TZXJJ2ZXJTdGF0ZVN0cmluZyUuICBSZXBvcnRlZCBzdGF0dXMgaXM6DQpRdWV1ZXMgLSAlVGFy Z2V0SW5zdGFuY2UuUXVldWVzU3RhdGVTdHJpbmclDQpEcml2ZXMgLSAlVGFy Z2V0SW5zdGFuY2UuRGlza3NTdGF0ZVN0cmluZyUNClNlcnZpY2VzIC0gJVRhcmdldEluc3RhbmNlLl NlcnZpY2VzU3RhdGVTdHJpbmclDQpNZW1vcnkgLSAlVGGFyZ2V0SW5zdGFuY2UuTWVtb3J5U3RhdGVT dHJpbmclDQpDUFUgLSAlVGFyZ2V0SW5zdGFuY2UuQ1BVU3RhdGVTdHJpbmclDQpbU3ViamVjdDpzdH IoNTkpXSVUYXJnZXRJbnN0YW5jZS5TZXJ2ZXJTdGF0ZVN0cmluZyUgb24gJVRhcmdldEluc3RhbmNl Lk5hbWUl msExchMonitoringResponses:: <Start of Duplicate#2> W19fQ0xBU1M6c3RyKDE3KV1TTVRQRXZlbnRDb25zdW1lcltOb3RpZnlPbkVycm9yOnN0cigyKV0tMV tSZXNwb25kVG9XaGljaE9iamVjdHM6c3RyKDEpXTBbT2JqZWN0c1RvUmVzcG9uZFRvOnN0cigwKV1b U01UUFNlcnZlcjpzdHIoNCldQUxFWFtUb0xpbmU6c3RyKDI1KV1yamtlbnZpbkBtZXRib2UuazEyLm 5qLnVzW01lc3NhZ2U6c3RyKDMxNyldJVRhcmdldEluc3RhbmNlLk5hbWUlIGhhcyByZXBvcnRlZCBh ICVUYXJnZXRJbnN0YW5jZS5TZXJJ2ZXJTdGF0ZVN0cmluZyUuICBSZXBvcnRlZCBzdGF0dXMgaXM6DQ pRdWV1ZXMgLSAlVGFyZ2V0SW5zdGFuY2UuUXVldWVzU3RhdGVTdHJpbmclDQpEcml2ZXMgLSAlVGFy Z2V0SW5zdGFuY2UuRGlza3NTdGF0ZVN0cmluZyUNClNlcnZpY2VzIC0gJVRhcmdldEluc3RhbmNlLl NlcnZpY2VzU3RhdGVTdHJpbmclDQpNZW1vcnkgLSAlVGFyZ2V0SW5zdGFuY2UuTWVtb3J5U3RhdGVT dHJpbmclDQpDUFUgLSAlVGFyZ2V0SW5zdGFuY2UuQ1BVU3RhdGVTdHJpbmclDQpbU3ViamVjdDpzdH IoNTkpXSVUYXJnZXRJbnN0YW5jZS5TZXJ2ZXJTdGF0ZVN0cmluZyUgb24gJVRhcmdldEluc3RhbmNl Lk5hbWUl

  1. 如果出现重复值,请使用 Adsiedit.msc 或 ldifde 删除其中一个重复项。 删除重复项后,再次运行 Active Directory 安装向导 ,重试升级。

第 5 部分:查找数据库损坏

根本原因可能是源域控制器上的数据库损坏。 若要查找数据库损坏并对其进行修复,请执行以下步骤:

  1. 检查源域控制器的目录服务事件日志中记录的最后 1240 个事件。 此事件可能在内部处理事件 1173 之前记录。 请注意最后 1240 个事件中引用的对象的 DN 路径,然后在源域控制器的主机上运行Repadmin.exe工具。 为此,请按照下列步骤进行操作:

    1. 单击“开始**”**,单击“运行”,键入命令,然后单击“确定”。
    2. 键入以下命令,然后按 Enter:
    REPADMIN /SHOWMETA CN=Secret,CN=Schema,CN=Configuration,DC=CORP,DC=COM  
    
  2. 查看从源域控制器复制的最后一个出站复制对象的元数据。 如果未找到重复值,请检查源域控制器的目录服务事件日志,了解在 1173 事件之前记录的最后 1240 个事件。 下面是示例 1240 事件。

  3. repadmin /showmeta针对在源域控制器上记录的最后 1240 个事件中引用的对象的域名路径运行该命令。 例如,将步骤 2 中的示例事件用于 CORP.COM 域中的域控制器,语法如下:

    REPADMIN /SHOWMETA CN=Secret,CN=Schema,CN=Configuration,DC=CORP,DC=COM
    

    在输出中查找不一致或可疑值,尤其是在“本地 USN”和“原始时间”列中。 例如,在以下截断输出示例中,两个属性(defaultObjectCategory 和 ObjectClass)显示 USN 数字和 0 个无效的日期和时间戳。

    从命令截断输出 repadmin /showmeta :

CN=Secret,=Schema,CN=Configuration,DC=CORP,DC=COM 对象 Loc。 USNOriginating Time: Attribute 21962002-01-29 05:52.47 instanceType 18295873486194836 4446-09-07 21:0 51.13defaultObjectCategory 182958734861948362002-01-29 05:52.47 objectClass

  1. 如果输出中引用的问题对象不是关键对象,请创建对象的 ldifde 备份,然后删除该对象。 请勿删除驻留在 Active Directory 架构分区中的问题对象。

  2. 针对 Active Directory 数据库运行 NTDSUTIL 文件完整性检查。 要执行此操作:

    1. Windows 2000 使用 setpwd 更改 DSRM 密码。 Windows Server 2003 使用 ntdsutil 更改 DSRM 密码。

      以下选项适用于 Windows Server 2003:

      322672 如何在 Windows Server 中重置目录服务还原模式管理员帐户密码

    2. 在 DSREPAIR 模式下启动源域控制器。

      注意

      尝试访问 DFS 根信息或 DFS 链接信息的客户端可能会在尝试连接期间收到“拒绝访问”错误消息,而域控制器处于 DSREPAIR 模式。 此行为是特意这样设计的。

    3. 从 Windows 命令提示符运行 NTDSUTIL 文件完整性检查。

    4. 在 NTDSUTIL 输出中查找错误。

  3. 如果 NTDSUTIL 完整性检查记录的 jet 错误 -1206,请调查以下选项。 在任何情况下,请勿使用 NTDSUTIL 或 ESENTUTL 等效项修复损坏的 Active Directory 数据库。

    1. 如果其他候选域控制器存在于林中源新域控制器,请运行 Active Directory 安装向导,使问题源域控制器脱机。

    2. 如果域中的其他域控制器存在,并且帮助程序域控制器没有重要的系统状态,请尝试正常降级原始源域控制器。 否则,强制降级,然后从林中删除其元数据。 运行 Active Directory 安装向导,在发生林中所有域控制器的端到端复制后,将原始域控制器添加回林。

    3. 如果满足以下所有条件,请还原该域控制器的系统状态:

      • 原始源域控制器是其域中唯一的域控制器。
      • 它包含关键系统状态(即,它包含林根域,或者对其 Active Directory 副本中的对象有大量投资)。
      • 存在有效的系统状态备份(即备份时间小于 mbstonelifetime 天,并且不包含损坏的对象)。

      注意

      包含单个副本的分区的系统状态还原实际上是该分区的权威还原。

    4. 如果原始源域控制器是其域中的唯一域控制器,并且它包含关键系统状态但不存在有效的系统状态备份,请考虑执行以下操作:

    • 将Microsoft基于 Windows NT 4.0 的备份域控制器(BDC)添加到域。 此选项假定混合模式或开关允许基于 Windows NT 4.0 的 BDC 在本机模式域中使用基于 Windows 2000 的域控制器进行复制。
    • 将基于 Windows NT 4.0 的 BDC 置于专用网络上。
    • 将基于 Windows NT 4.0 的 BDC 提升到主域控制器(PDC)。
    • 将基于 Windows NT 4.0 的 PDC 升级到 Windows 2000 或 Windows Server 2003。
    • 添加副本域控制器,以便进行容错和负载均衡。
    • 添加 Active Directory 程序所需的架构更改。

第 6 部分:关闭诊断日志记录

完成故障排除并解决问题后,请关闭诊断日志记录。 为此,请转到“第 1 部分:启用诊断日志记录”,并按照步骤 1 到 5 进行操作。 将以下注册表项设置为 0(零)。

  • 5 个复制事件
  • 7 内部配置
  • 8 目录访问
  • 9 内部处理
  • 24 DS 架构

方法 2:条件 3 的解析

当帮助程序域控制器在其数据库中具有当前架构未涵盖的属性时,会出现“架构不匹配”错误的第三个原因。 如果在安装 Windows 2000 Service Pack 3(SP3)之前在 Windows 2000 域控制器上删除架构对象,则可能会出现此问题。

若要解决该问题,请执行以下步骤:

  1. 标识具有不在架构中的属性的对象。 为此,请考虑以下事项:

    • 如果运行的是 Windows 2000,则会使用受影响的对象的 DN 登录到源域控制器上的 1039 事件。
    • 如果运行的是任何其他操作系统,请在源上启用第五级(5)的复制事件。 在出站复制期间,将记录要寄送的对象和属性。 发生错误时,查找将寄送到目标计算机的下一个对象。
  2. 确定具有额外属性的对象后,请执行以下任一或多项操作:

    • 删除对象。 将去除有问题的属性,并将交付墓碑进行复制。
    • 编辑对象以删除有问题的属性。
    • 重新添加已删除的架构条目。

资料来源与适用范围

资料来源
微软官方中文故障文档
适用范围
适用于: Windows Server 2012 R2原始 KB 数: 838179
内容语言
中文;命令、路径和错误标识保留技术原文
本地收录日期
2026-10-26
授权说明
CC BY 4.0

正文与所需资源由本站本地存储。查看来源及更新记录 ↗

请按适用版本和实际日志确认原因;本站没有对每一种系统或设备逐项执行文中的操作。