Active Directory 复制事件 ID 2108 和 1084 在入站复制期间发生Active Directory 域服务

本文提供了一个解决方案,解决以下问题:发生Active Directory 域服务 (AD DS) 入站复制时,获取事件 ID 2108 和 1084。

适用于:Windows Server 2016、Windows Server 2012 R2
原始 KB 编号: 837932

症状

发生Active Directory 域服务 (AD DS) 的入站复制时,运行 Microsoft Windows Server 2003 Service Pack 1 (SP1 的目标域控制器通过) Windows Server 2016 记录目录服务日志中的以下事件:

事件 ID 1084:内部事件:Active Directory 域服务无法使用从以下源目录服务接收的更改更新以下对象。 这是因为在对目录服务Active Directory 域服务的更改应用期间发生了错误。

对象:CN=<cn 路径>

对象 GUID: <objectguid>

源目录服务:NTDSA._msdcs。<forst 根 DNS 域名>

在更正此更新问题之前,将阻止目录服务与源目录服务的同步。

将在下一次计划的复制中再次尝试此操作。

用户操作:

如果此情况似乎与低系统资源 ((例如,物理内存或虚拟内存不足) )相关,请重启本地计算机。

其他数据:

错误值: <错误代码><错误字符串>

注意

  • 在“错误值”文本中, <错误代码> 和 <错误字符串> 表示日志条目中显示的实际值。
  • 自 Windows 2000 Server 以来已记录事件 1804。

运行 Windows Server 2003 SP1 的目标域控制器还会在目录服务日志中记录以下事件:

事件 ID 2108:此事件包含以前记录的 1084 事件的 REPAIR 过程。 此消息指示此复制目标上Active Directory 域服务数据库的一致性存在特定问题。 将复制的更改应用于以下对象时发生数据库错误。 数据库包含意外内容,导致无法进行更改。

注意

  • 安装 SP1 后,事件 2108 在 Windows Server 2003 上记录。
  • 这是事件 1084 的合作伙伴事件。

原因

当域控制器无法将事务更改写入 Active Directory 数据库的本地副本时,会发生这些事件。

解决方案

若要解决此问题,请执行以下步骤。 在进行更改的每个步骤后,重试复制操作。

  1. 确保托管 Active Directory 数据库的卷上有足够的可用磁盘空间,然后重试该操作。 请按照以下步骤释放更多磁盘空间:

    1. 将不相关的文件移动到另一个卷。

    2. 执行系统状态备份。 此过程可减小事务日志文件的大小。 有关详细信息,请参阅 如何使用备份功能在 Windows Server 2003 中备份和还原数据

    3. 执行 Active Directory 的脱机碎片整理。 有关详细信息,请参阅 如何对 Active Directory 数据库执行脱机碎片整理

  2. 确保托管 Ntds.dit 文件和事务日志文件的物理驱动器未打开 NTFS 文件系统压缩。 若要确认这一点,请右键单击“我的计算机”中的驱动器号,并确保未选中“压缩驱动器以节省磁盘空间检查框。

  3. 确保托管 Ntds.dit 文件和事务日志文件的物理驱动器明确排除在远程和本地防病毒程序之外。 有关详细信息,请参阅防病毒软件文档。

  4. 如果目标域控制器包含全局编录,并且错误发生在其中一个只读分区中,请使用以下方法之一来帮助解决问题:

    • 方法 1:使用 Repadmin.exe 工具的重新托管选项重新托管受影响的分区。

      Repadmin.exe 工具安装在具有域控制器角色的计算机上,并与 RSAT 工具一起安装在成员工作站和服务器上。 为此,请在命令提示符处键入以下命令,其中 domain_controller 是目标域控制器的名称, good_source_domain_controller_name 是另一个域控制器的名称:

      repadmin /rehost domain_controller naming_context good_source_domain_controller_name
      
    • 方法 2:配置域控制器,使其不再是全局编录服务器。 请按照下列步骤操作:

      1. 单击 “开始”,指向 “管理工具”,然后单击“ Active Directory 站点和服务”。
      2. 找到 “Default-First-Site-Name\ Servers\ domain_controller_name\ NTDS 设置” 子树。
      3. 右键单击“ NTDS 设置”,然后单击“ 属性”。
      4. 单击以清除“全局编录检查”框,然后单击“确定”。
    • 方法 3

      如果错误发生在程序分区中,请使用 Ntdsutil.exe 工具更改承载程序分区的副本 (replica) 。

  5. 使用第三方实用工具(如 FileMon 实用工具)确定程序或用户是否正在访问 Active Directory 数据库、事务日志文件或Edp.tmp文件。 如果存在文件访问活动,请停止负责该活动的服务。 有关 FileMon 实用工具的详细信息,请参阅 适用于 Windows v7.04 的 FileMon

  6. 确定问题是否与目标域控制器上的 Active Directory 对象的父级相关。 为此,请按照下列步骤操作:

    1. 在源域控制器上,将事件 1084 中引用的对象暂时移动到组织单位 (OU) 容器。 OU 必须与当前容器无关。 例如,将 对象从域的根目录移动到新容器。

    2. 如果在移动对象后完成复制,请将对象移回其原始容器。

    3. 强制安全描述符传播器在源和目标域控制器上都存在的数据库中重新生成对象容器祖先。 为此,请按照下列步骤操作:

      1. 确保已安装 Windows Server 2003 支持工具。 支持工具在 Support\Tools 文件夹中的 Windows Server 2003 CD-ROM 上可用。 双击 Suptools.msi 文件以安装工具。

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

      3. 单击“ 连接”,单击“ 连接”,然后键入要连接到的服务器的名称。

        注意

        你将通过 Active Directory 的端口 389 进行连接。

      4. 单击“ 连接”,单击“ 绑定”,然后键入管理用户名、密码和域。 (必须使用域管理员或企业管理员凭据。) 单击“ 确定”。

      5. 在“ 浏览 ”菜单上,单击“ 修改”。 将 DN 文本框留空。 在 “属性 ”文本框中,键入 FixUpInheritance。 在“”文本框中单击“”。

      6. “操作” 区域中,单击“ 添加”。

      7. 单击 Enter 以填充“条目列表”区域。

        注意

        “条目列表” 区域中,将显示 [添加]fixupinheritance:yes

      8. 单击“运行”

        注意

        右窗格现在显示“ 已修改” 状态,并且安全描述符传播器将启动。 安全描述符传播器的运行时取决于 Active Directory 数据库的大小。 当 NTDS Performance 对象中的 DS 安全传播事件 计数器返回到零时,该过程就完成。

      9. 依次单击“ 关闭”、“ 连接”和“ 退出”。

  7. 在源域控制器上,在命令提示符处键入 repadmin /showmeta distinguished_name_path ,然后查看事件 1084 中引用的可分辨名称路径的对象元数据。 在目标域控制器上重复此步骤。 查找包括但不限于以下内容的不一致值:

    • 对象上显示的属性名称和数量不正确
    • 原始时间或日期戳不正确
    • USN) (本地更新序列号不正确

    不正确的值可能表示承载对象的数据库页存在问题。

    若要在可分辨名称路径引用活动对象时使用 Repadmin.exe 工具,请在命令提示符处键入以下命令:

    repadmin /showmeta remote_domain_controller_name distinguished_name_path_of_reference _object
    

    如果对象位于已删除的对象容器中,或者无法使用 Repadmin.exe 工具查找对象,请使用对象的 GUID 引用来查找对象。 事件 1084 中引用了此 GUID。 为此,请在命令提示符处键入以下命令:

    repadmin /showmeta remote_domain_controller_name "GUID_for_the_object that_is_referenced_in_Event_ID_1084"
    

    例如,如果事件 1084 和事件 2108 引用 GUID 为 b49cd496-98a2-4500-bb08-58550c2f79ac 的对象,则键入 repadmin /showmeta "<GUID=b49cd496-98a2-4500-bb08-58550c2f79ac>"

    注意

    需要使用引号和括号。

  8. 通过为操作系统安装最新的 Service Pack 来获取最新的 Ntdsutil.exe 工具。 使用 Ntdsutil.exe 工具在源域控制器上执行 Active Directory 数据库的完整性检查。

    在目录服务还原模式下启动计算机之前,请获取脱机管理员帐户的密码。 如果不知道管理员帐户密码,请在在此模式下启动之前重置目录服务还原模式密码。 在运行 Windows 2000 Service Pack 2 (SP2) 及更高版本的域控制器上,使用 Setpwd.exe 命令。 Setpwd.exe 命令位于 %Systemroot%\System32 文件夹中。 在基于 Windows Server 2003 的域控制器上,使用 Ntdsutil Set Directory Services Restore Mode Password 命令。

    有关目录服务还原模式的详细信息,请参阅 启动基于 Windows 或基于 SBS 的域控制器时的“目录服务无法启动”错误消息

    有关如何在 Windows Server 2003 中更改密码的详细信息,请参阅 启动基于 Windows 或基于 SBS 的域控制器时的“目录服务无法启动”错误消息

  9. 重启源域控制器,然后按 F8 启动目录服务还原模式。 在命令提示符处,键入 ntdsutil files integrity,然后按 Enter。

    注意

    此命令确认数据库的完整性。

    • 如果 Ntdsutil 工具报告数据库已损坏,并且源域控制器上有命名上下文的副本,请强制降级源域控制器,然后在验证驱动程序、固件以及托管 Active Directory 数据库和事务日志文件的物理驱动器的完整性后重新升级它。

    • 如果数据库已损坏,并且源域控制器上不存在命名上下文的副本,请还原最新的系统状态。 再次使用 NTDSutil.exe 工具确认数据库的完整性。 如果仍收到损坏消息,请还原旧备份,直到可以确认域控制器的完整性。

    • 如果数据库仍损坏,请还原最新的系统状态备份,然后在命令提示符处键入:

      ntdsutil files recover
      

      再次使用 NTDSutil.exe 工具确认数据库的完整性。 如果数据库传递完整性检查,请对磁盘分区执行脱机碎片整理。 有关详细信息,请参阅 如何对 Active Directory 数据库执行脱机碎片整理

      若要执行数据库的完整性检查,请在命令提示符处键入以下命令,然后按 Enter,其中 database_name 是 Active Directory 数据库的名称:

      esentutl.exe /g database_name
      

      最后,使用“正常启动 Windows”选项重新启动计算机,然后重试从源域控制器复制到受影响的目标域控制器。 如果数据库检查完整性失败,则必须停止域控制器。 使用 Active Directory 迁移工具 (ADMT) 迁移对象。 还可以使用 Ldifde.exe 和 Csvde.exe 工具导出要导入到新目标域控制器的对象。

      有关如何使用 Ldifde.exe 和 Csvde.exe 工具的详细信息,请参阅 批量导入和导出到 Active Directory 的分步指南

  10. 如果这些步骤不成功,并且复制错误仍然存在,请降级域控制器,确认物理驱动器以及托管 Ntds.dit 文件和磁盘子系统的卷的完整性,然后再次升级域控制器。 使用相同的计算机名称。

  11. 使用 ntdsutil files compact 命令对 Active Directory 数据库执行脱机碎片整理。 有关详细信息,请参阅 执行 Active Directory 数据库的脱机碎片整理

  12. 在命令提示符处,键入以下命令,然后按 Enter:

    ntdsutil "semantic database analysis" "go"
    

    注意

    此示例中的引号是使用单个命令行参数运行语义数据库分析命令所必需的。

    如果报告错误, type ntdsutil go fixup则为 ,然后按 Enter。

    注意

    语义数据库命令不会对 Active Directory 数据库执行有损修复,例如 Windows Server 2003 Service Pack 1 Ntdsutil 文件修复或 Esentutl /p 命令。

    第三方信息免责声明

    本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 不对这些产品的性能或可靠性提供任何明示或暗示性担保。

数据收集

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