排查 Active Directory 复制错误 8614

本文提供排查 Active Directory 复制错误 8614 的步骤。

适用于: Windows Server 2012 R2
原始 KB 编号: 2020053

注意

家庭用户: 本文仅适用于技术支持代理和 IT 专业人员。 如果正在寻求解决问题的帮助,请 向 Microsoft 社区提问

症状

  1. DCDIAG 报告 Active Directory 复制测试失败,出现错误状态代码 8614:Active Directory 无法使用此服务器进行复制,因为自上次使用此服务器进行复制以来的时间已超过逻辑删除生存期。

    Testing server: <site name><destination dc name>  
    Starting test: Replications  
    * Replications Check  
    [Replications Check,<destination DC name] A recent replication attempt failed:  
    From <source DC> to <destination DC>  
    Naming Context: <directory partition DN path>  
     The replication generated an error (8614):
     Active Directory cannot replicate with this server because the time since the last replication with this server has exceeded the tombstone lifetime.  
    The failure occurred at <date> <time>.  
    The last success occurred at <date> <time>.  
    3 failures have occurred since the last success.  
    
  2. REPADMIN.EXE 报告上次复制尝试失败,状态为 8614。 通常引用 8614 状态的 REPADMIN 命令包括但不限于:

    • REPADMIN /REPLSUM
    • REPADMIN /SHOWREPL
    • REPADMIN /SHOWREPS
    • REPADMIN /SYNCALL

    下面显示了从 CONTOSO-DC2 到 CONTOSO-DC1 的入站复制失败并拒绝复制访问错误的示例输出REPADMIN /SHOWREPS

     efault-First-Site-Name\CONTOSO-DC1  
     DSA Options: IS_GC  
     Site Options: (none)  
     DSA object GUID:  
     DSA invocationID:  
    
    ==== INBOUND NEIGHBORS ======================================  
    
    DC=contoso,DC=com  
    Default-First-Site-Name\CONTOSO-DC2 via RPC  
    DSA object GUID:  
    Last attempt @ <date> <time> failed, result 8614(0x21a6):
    The Active Directory cannot replicate with this server because the time since the last replication with this server has exceeded the tombstone lifetime.  
    <#> consecutive failure(s).  
    Last success @ <date> <time>.  
    
  3. 具有五种状态的 NTDS KCC、NTDS 常规或 Microsoft-Windows-ActiveDirectory_DomainService事件记录在目录服务事件日志中。

    通常引用 8524 状态的 Active Directory 事件包括但不限于:

    事件源 ID 事件字符串
    NTDS KCC 1925 尝试为以下可写目录分区建立复制链接失败。
  4. NTDS 复制事件 2042 可能记录在目录服务事件日志中:

    Event Type: Error
    Event Source: NTDS Replication
    Event Category: Replication
    Event ID: 2042
    User: NT AUTHORITY\ANONYMOUS LOGON
    Computer: <name of DC that logged event>
    
    Description:  
    It has been too long since this machine last replicated with the named source
    machine. The time between replications with this source has exceeded the tombstone
    lifetime. Replication has been stopped with this source.
    
    The reason that replication is not allowed to continue is that the two machine's views of deleted objects may now be different. The source machine may still have copies of objects that have been deleted (and garbage collected) on this machine. If they were allowed to replicate, the source machine might return objects which have already been deleted.
    
    Time of last successful replication: YYYY-MM-DD HH:MM:SS
    Invocation ID of source: <32 character GUID for source DC>
    Name of source: <fully qualified cname record of source DC>
    Tombstone lifetime (days): <current TSL value. Default = 60 or 180 days>
    
    The replication operation has failed.
    
    User Action:
    
    Determine which of the two machines was disconnected from the forest and is now out of date. You have three options:
    
    1. Demote or reinstall the machine(s) that were disconnected.
    2. Use the repadmin /removelingeringobjects tool to remove inconsistent deleted objects and then resume replication.
    3. Resume replication. Inconsistent deleted objects may be introduced. You can continue replication by using the following registry key. Once the systems replicate once, it's recommended that you remove the key to reinstate the protection.  
    
  5. Active Directory 站点和服务中的 “立即复制 ”命令返回以下消息:

    Active Directory 无法使用此服务器进行复制,因为自上次使用此服务器进行复制以来的时间已超过逻辑删除生存期。

    右键单击源 DC 中的连接对象,然后选择“ 立即在 Active Directory 站点和服务 (DSSITE 中复制。MSC) 失败。 收到以下消息:

    Active Directory 无法使用此服务器进行复制,因为自上次使用此服务器进行复制以来的时间已超过逻辑删除生存期。

    屏幕上的错误消息文本如下所示:

    对话框标题文本:立即复制
    对话框消息文本:尝试将命名上下文 <%directory 分区名称%> 从域控制器 <源 DC> 同步到域控制器 <目标 DC> 期间发生以下错误:

    Active Directory 无法使用此服务器进行复制,因为自上次使用此服务器进行复制以来的时间已超过逻辑删除生存期。
    操作不会继续

    对话框中的按钮:确定

原因

Active Directory 域控制器支持多主服务器复制。 保存可写分区的任何域控制器都可以创建、修改或删除对象或属性, (值) 。 删除对象/属性的知识在逻辑删除生存期天数中仍然存在。 (请参阅有关Windows Server Active Directory林中挥之对象的信息

Active Directory 需要从所有分区持有者进行端到端复制,以传递方式将目录分区的所有原始删除复制到所有分区持有者。 在滚动 TSL 天数内入站复制目录分区失败会导致对象挥之不去。 挥之不去的对象是至少一个 DC 有意删除的对象,但错误地存在于无法入站复制所有唯一删除操作的暂时性知识的目标 DC 上。

错误 8614 是运行 Windows Server 2003 或更高版本的域控制器中添加的逻辑示例。 它隔离延迟对象的分布,并识别导致目录分区不一致的长期复制失败。

错误 8614 和 NTDS 复制事件 2042 的根本原因包括:

  1. 记录 8614 错误的目标 DC 无法从一个或多个源 DC 对目录分区进行入站复制,以逻辑删除生存期天数。

  2. 自上次成功复制以来,目标 DC 上的系统时间移动或跳过了未来一个或多个天数的逻辑删除生存期。 它向复制引擎提供目标 DC 无法入站复制目录分区的逻辑删除生存期已用天数 的外观

    满足以下条件时,可能会发生时间跳跃:

    • 目标 DC 成功进行入站复制,采用 错误的 系统时间 TSL 或将来的天数。
    • 然后,目标 DC 会尝试从上次从 TSL 复制的源进行入站复制或过去天数的更多时间。

    时间从当前时间跳到日期/时间逻辑删除生存期或过去几天以上,成功入站复制。 然后,它会尝试在采用时间 TSL 或以后的天数之后进行入站复制。

基本上,复制错误 8614 的原因和解决方法同样适用于 NTDS 复制事件 2042 的原因和解决方法。

解决方案

注意

有两个操作计划用于恢复记录错误状态 8614 或 NTDS 复制事件 2042 的 Active Directory 域控制器。 可以强制降级域控制器,也可以使用下面的操作计划,其中显示“检查所需的修补程序,查找时间跳跃,检查等待的对象,并删除它们(如果存在),删除任何复制隔离,解决复制失败,然后将 DC 重新投入使用。强制降级此类 DC 可能更简单、更快,但可能会导致原始更新丢失, (即,强制降级的域控制器上的数据丢失) 。 通过执行以下步骤,Active Directory 会从这种情况中正常恢复。 为方案选择最佳解决方案。 不要认为强制降级是唯一可行的解决方案,尤其是在复制失败很容易解决或位于 Active Directory 外部时。

  1. 检查逻辑删除生存期的非默认值。

    默认情况下,逻辑删除生存期使用 60 天或 180 天,具体取决于在林中部署的 Windows 版本。 Microsoft 支持部门会定期看到在这些时间段内入站复制失败的 DC。 此外,可能已将墓碑生存期配置为较短的时间,例如两天。 如果是这样,未进行入站复制的 DC(例如,五天)将不通过以下测试:

    所有 DC 都必须使用滚动 TSL 天数进行复制

    使用 repadmin /showattr 查看是否已配置 TombstoneLifetime 属性的非默认值。

    repadmin /showattr "CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=<forest root domain>,DC=<top level domain>"
    

    如果输出中 showattr 不存在属性,则使用内部默认值。

  2. 检查 TSL 天数内入站复制失败的 DC。

    使用 Excel 运行 repadmin /showrepl * /csv 分析,如 验证成功复制到域控制器 部分中所述。 对 Excel 中最后一个复制成功列的 repum 输出进行排序,顺序为从最不最新到最新的日期和时间。

  3. 检查 Windows Server 2003 RTM 域控制器。

    如果 Windows Server 2003 RTM 域控制器上发生 8614 错误,请安装最新的 Windows Server 2003 Service Pack。

  4. 检查时间跳跃。

    若要确定是否发生时间跳跃,检查事件和诊断日志 (repadmin /showreps,dcdiag 日志) 目标 DC 记录以下时间戳的 8614 错误:

    • 早于操作系统发布的日期戳。 例如,Windows Server 2008 中发布的操作系统的 Windows Server 2003 日期戳。
    • 在林中安装操作系统之前的日期戳。
    • 将来的日期戳。
    • 给定日期范围中未记录任何事件。

    Microsoft 支持部门团队在过去和将来看到生产域控制器上的系统时间错误地跳跃了小时、天、周、年,甚至数十年。

    如果发现系统时间不准确,请更正它。 然后,尝试确定时间跳跃的原因,以及可以做些什么来防止不准确的时间未来与纠正错误时间。 可以调查的领域包括:

    • 林根 PDC 是使用外部时间源配置的吗?
    • 引用时间源是否联机、在网络上可用以及可在 DNS 中解析?
    • Microsoft 或第三方时间服务是否正在运行且处于无错误状态?
    • DC 角色计算机是否配置为使用 NT5DS 层次结构到源时间?
    • 如何针对较大的时间偏移配置 Windows 时间服务中所述的时间回滚保护是否已到位?
    • 系统时钟在 BIOS 中是否具有良好的电池和准确的时间?
    • 虚拟主机和来宾计算机是否根据托管制造商的建议配置为源时间?

    本文 如何针对较大的时间偏移文档步骤配置 Windows 时间服务 ,以帮助保护域控制器侦听无效的时间样本。 有关 MaxPosPhaseCorrectionMaxNegPhaseCorrection 的详细信息,请参阅 Windows 时间服务

  5. 检查并删除挥之不去的对象(如果存在)。

    8614 错误复制隔离的要点是,在目标 DC 的注册表中将“允许具有不同且损坏伙伴的复制”设置为 1 之前,检查来保留对象,并在每个本地保留的分区中删除它们(如果存在),即使你认为林中的所有目标 DC 都以严格的复制一致性运行。

    删除挥之不去的对象超出了本文的范围。 有关详细信息,请参阅以下文章:

    Repadmin 语法如下所示:

    语法 (Windows Server 2008 及更高版本的联机帮助)
    c:\>repadmin /removelingeringobjects <Dest_DSA_LIST> <Source DSA GUID> <NC> [/advisory_mode] c:\>repadmin /help:removelingeringobject
  6. 评估对目标 DC 设置严格复制。

    严格模式复制可防止使用垃圾回收创建、删除和回收有意删除的对象的目标 DC 上重新更新挥之不去的对象。

    用于严格复制的注册表项:

    • 路径: HKEY_LOCAL_MACHINE\system\ccs\services\ntds\parameters
    • 设置:严格复制一致性 <- 不区分大小写>
    • 类型:reg_dword
    • 值:0 |1

    Repadmin 用于在一个或多个 DC 上启用和禁用严格复制的语法如下所示:

    语法 (Windows Server 2008 及更高版本的联机帮助) 在单个 DC 上启用 在林中的所有 DC 上启用 在林中的所有 GC 上启用
    repadmin /regkey <DSA_LIST> <{+|-}key> [value [/reg_sz]] Repadmin /help:regkey repadmin /regkey <fully qualified computer name> +strict repadmin /regkey * +strict repadmin /regkey gc: +strict
  7. 在 8614 DC 上将 “允许具有不同和损坏伙伴的复制 ”设置为 1。

    删除任何挥之不去的对象后,禁用基于时间的复制隔离:

    注册表方法

    • 注册表路径: HKEY_LOCAL_MACHINE\system\ccs\services\ntds\parameters
    • 注册表设置:允许具有不同和损坏伙伴 <的复制 - 不区分大小写”
    • 注册表值:0 = 不允许,1 = 允许

    Repadmin 方法

    语法 (Windows Server 2008 及更高版本的联机帮助) 在单个 DC 上启用 在林中的所有 DC 上启用 在林中的所有 GC 上启用
    repadmin /regkey <DSA_LIST> <{+|-}key> [value [/reg_sz]] Repadmin /help:regkey repadmin /regkey dc01.contoso.com +allowDivergent repadmin /regkey * +allowDivergent repadmin /regkey GC: +allowDivergent
  8. 解决 AD 复制失败(如果存在)。

    在目标 DC 上记录 8614 错误状态时,先前在 TSL 天数中记录的复制错误将被屏蔽。

    目标 DC 报告了 8614 错误并不意味着复制错误驻留在目标 DC 上。 复制失败的原因可能是网络或 DNS 名称解析。 或者,以下项目之一可能存在问题:

    • 身份验证
    • jet 数据库
    • 拓扑
    • 源 DC 或目标 DC 上的复制引擎

    查看过去的目录服务事件和诊断输出 (dcdiag、 repadmin 日志) 由源 DC、目标 DC 和过去的备用复制伙伴生成,以确定阻止在目标 DC 和源 DC 之间复制的范围和故障状态。

  9. 删除 允许具有发散和损坏伙伴的复制 ,或在注册表中将 允许具有不同和损坏伙伴的复制 设置为 0。

  10. 今后每天监视 Active Directory 复制。

    每天使用 Active Directory 监视应用程序监视 Active Directory 林中的端到端复制。 一个廉价但有效的选项是运行 repadmin /showrepl * /csv ,然后在 Excel 中分析结果。 有关详细信息,请参阅 方法 2:使用命令行监视复制

    确定 50% 和 90% 的逻辑删除生存期即将发生复制失败的 DC。 将它们放在watch列表中。 在 TSL 的 50% 处,进行强推送以解决复制错误。 在 90% 时,请考虑在必要时强制降级导致复制错误的 DC。 为此,请使用 dcpromo /forceremoval 命令。

    同样,在目标 DC 上记录的复制错误可能是由以下问题引起的:

    • 源 DC
    • 目标 DC
    • 基础网络

    因此,在采取预防措施之前,请尝试确定原因和故障所在位置。

数据收集

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

References

修复 (事件 ID 1388、1988、2042)