Active Directory 复制事件 ID 1388 或 1988:检测到挥之不去的对象

本文可帮助你排查 Active Directory 复制事件 ID 1388 和 1988 的问题。

适用于: Windows Server(所有支持的版本)
原始 KB 数: 4469619

总结

如果目标域控制器记录 事件 ID 1388事件 ID 1988,则检测到一个徘徊对象,并且目标域控制器上存在两个条件之一:

  • 事件 ID 1388:目标域控制器上发生了徘徊对象的入站复制。
  • 事件 ID 1988:目标域控制器上阻止了对徘徊对象的目录分区的入站复制。

事件 ID 1388

此事件指示未启用严格复制一致性的目标域控制器收到更新不在 Active Directory 数据库的本地副本中的对象的请求。 作为响应,目标域控制器从源复制伙伴请求了完整对象。 这样,将一个挥发对象复制到目标域控制器。 因此,将挥发对象重新引入目录。

重要

发生事件 ID 1388 时,无法使用 Lingering Object Liquidator v2 (LOLv2) 或 Repadmin 工具删除挥发对象。

有关如何在此示例中删除挥之不去的对象的信息,请参阅:

本文中的过程和信息适用于从全局编录服务器以及不是全局编录服务器的域控制器中删除挥之不去的对象。

事件文本标识源域控制器和过时的(挥发)对象。 下面是事件文本的示例:

日志名称:目录服务
来源:Microsoft-Windows-ActiveDirectory_DomainService
日期:2008/5/3 下午 3:34:01
事件 ID:1388
任务类别:复制
级别:错误
关键字:经典
用户:匿名登录
计算机:DC3.contoso.com说明:另一个域控制器(DC)尝试将此 DC 复制到本地Active Directory 域服务数据库中不存在的对象。 该对象可能已被删除,并且已回收垃圾(自删除对象以来的墓碑生存期或更多时间)已在此 DC 上。 更新请求中包含的属性集不足以创建对象。 将使用完整的属性集重新请求该对象,并在此 DC 上重新创建。

源 DC(特定于传输的网络地址):
4a8717eb-8e58-456c-995a-c92e4add7e8e._msdcs.contoso.com
对象:
CN=InternalApps,CN=Users,DC=contoso,DC=com
对象 GUID:a21aa6d9-7e8a-4a8f-bebf-c3e38d0b733a
目录分区:
DC=contoso,DC=com
目标最高属性 USN:20510
用户操作:
验证是否存在此对象的继续愿望。 若要停止重新创建将来的类似对象,应创建以下注册表项。

注册表项:
HKLM\System\CurrentControlSet\Services\NTDS\Parameters\Strict Replication Consistency

事件 ID 1988

此事件指示启用了严格复制一致性的目标域控制器已收到更新 Active Directory 数据库的本地副本中不存在的对象的请求。 作为响应,目标域控制器阻止从该源域控制器复制包含该对象的目录分区。 事件文本标识源域控制器和过时的(挥发)对象。 下面是事件文本的示例:

日志名称:目录服务
来源:Microsoft-Windows-ActiveDirectory_DomainService
日期:2008/2/7 8:20:11 AM 事件 ID:1988
任务类别:复制
级别:错误
关键字:经典
用户:匿名登录
计算机: DC5.contoso.com
说明:
Active Directory 域服务复制遇到以下分区中已从本地域控制器(DC)Active Directory 域服务数据库中删除的对象。 并非所有直接复制或可传递复制合作伙伴在删除前的逻辑删除生存期天数都经过。 从Active Directory 域服务分区中删除和垃圾回收的对象,但仍存在于同一域中其他 DC 的可写分区中,或林中其他域中全局目录服务器的只读分区称为“挥之不去的对象”。

正在记录此事件,因为源 DC 包含本地 DC Active Directory 域服务 数据库上不存在的挥发对象。 此复制尝试已被阻止。

此问题的最佳解决方案是识别和删除林中的所有挥发对象。

源 DC(特定于传输的网络地址):
4a8717eb-8e58-456c-995a-c92e4add7e8e._msdcs.contoso.com
对象:CN=InternalApps,CN=Users,DC=contoso,DC=com
对象 GUID:
a21aa6d9-7e8a-4a8f-bebf-c3e38d0b733a

诊断

已从 AD DS 永久删除的对象(也就是说,其逻辑删除已在所有连接的域控制器上被垃圾回收)保留在断开连接的域控制器上。 域控制器无法接收对象删除的直接或可传递复制,因为它已断开连接(处于脱机状态或遇到入站复制失败),而复制拓扑在超过逻辑删除生存期的时间段内。 域控制器现在重新连接到拓扑,并且该对象已在域控制器上更新,导致复制通知给复制伙伴,指出更新已准备好进行复制。 复制伙伴根据复制一致性设置做出响应。 此通知适用于尝试复制可写对象。 全局编录服务器上也可能存在可写的挥发对象的副本。

解决方法

如果检测到徘徊对象的复制,则可以使用 LOLv2 识别可能存储此对象的域控制器(包括全局目录服务器),或使用 LOLv2 工具或运行 repadmin 命令从 AD DS 中删除该对象,以删除这些服务器上的挥之不去的对象(repadmin /removelingeringobjects包括全局目录服务器)。 此命令在运行受支持的 Windows Server 版本的域控制器上可用。

若要删除挥之不去的对象,请执行以下操作:

  1. 使用事件文本标识以下内容:
    1. 对象的目录分区
    2. 尝试复制挥之不去对象的源域控制器
  2. 使用 Repadmin 标识权威域控制器的 GUID。
  3. 使用 LOLv2Repadmin删除挥之不去的对象。
  4. 如有必要,请启用严格的复制一致性
  5. 如有必要,请确保为新升级的域控制器启用严格的复制一致性。

使用 Repadmin 标识权威域控制器的 GUID:

若要执行删除挥发对象的过程,必须标识具有目录分区的可写副本的最新版本域控制器的全局唯一标识符(GUID),该副本包含已报告的挥发对象。 在事件消息中标识目录分区。 域控制器的对象 GUID 存储在 NTDS Settings 对象的 objectGUID 属性中。

要求:

  • 要标识其 GUID 的域控制器域中的域管理员成员身份是完成此过程所需的最低要求。 查看有关使用适当帐户和本地和域默认组中组成员身份的详细信息。
  • 工具:Repadmin.exe

标识域控制器的 GUID 的步骤:

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

    repadmin /showrepl <ServerName>
    
    参数 说明
    /showrepl 显示复制状态,包括 ServerName> 上次尝试入站复制 Active Directory 分区的域控制器<的时间。 还显示指定域控制器的 GUID。
    <ServerName> 要显示的 GUID 的域控制器的名称。
  2. 在输出的第一部分,找到 objectGuid 条目。 选择 GUID 值并将其复制到文本文件中,以便你可以在其他位置使用它。

使用 LOLv2 或 Repadmin 删除挥之不去的对象:

要求:

  • 如果具有徘徊对象的目录分区是配置或架构目录分区的目录分区,则域管理员域控制器的域中的成员身份是完成此过程所需的最低成员身份。 查看有关使用适当帐户和本地和域默认组中组成员身份的详细信息。

  • 操作系统:支持的 Windows Server 版本。

  • 删除挥发对象的首选方法是使用 LOLv2。 在某些情况下,无法使用 LOLv2,可以使用Repadmin.exe

有关 LOLv2 的详细信息:

使用 Repadmin 删除挥之不去的对象的步骤:

  1. 以管理员身份打开命令提示符:在 “开始” 菜单上,右键单击 命令提示符,然后单击“ 以管理员身份运行”。 如果出现“用户帐户控制”对话框,请提供域管理员或企业管理员凭据(如果需要),然后单击“继续”。

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

    repadmin /removelingeringobjects <ServerName> <ServerGUID> <DirectoryPartition> /advisory_mode
    
    参数 说明
    /removelingeringobjects 从由 ServerName> 为 DirectoryPartition> 指定的<目录分区指定的<域控制器中删除挥发对象。
    <ServerName> 在事件消息中标识(事件 ID 1388 或事件 ID 1988)中标识的域控制器的名称。 可以使用域名系统(DNS)名称或可分辨名称,例如,可分辨名称 CN=DC5,OU=域控制器,DC=contoso,DC=com 或 DNS 名称 DC5.contoso.com
    <ServerGUID> 域控制器的 GUID,该域控制器具有包含徘徊对象的目录分区的最新可写副本。
    <DirectoryPartition> 事件消息中标识的目录分区的可分辨名称,例如:
    • 对于林中的 contoso.com Sales 域目录分区:DC=sales,DC=contoso,DC=com
    • 对于林中的 contoso.com 配置目录分区:CN=configuration,DC=contoso,DC=com
    • 对于林中的 contoso.com 架构目录分区:CN=schema,CN=configuration,DC=contoso,DC=com
    /advisory_mode 记录要删除的挥发对象,以便查看它们,但不删除它们。
  3. 重复步骤 2,不 /advisory_mode 删除目录分区中标识的挥发对象。

  4. 对可能具有挥之不去对象的每个域控制器重复步骤 2 和步骤 3。

注意

<ServerName> 参数使用 repadmin 的 DC_LIST 语法,该语法允许对林中的所有域控制器和 gc:对林中的所有全局编录服务器使用 * 。 若要查看DC_LIST语法,请键入 repadmin /listhelp。 有关参数和参数的/regkey语法的信息,请键入 repadmin /experthelp/removelingeringobjects

启用严格的复制一致性:

为了确保在发生对象时无法复制延迟对象,请对所有域控制器启用严格的复制一致性。 复制一致性设置存储在每个域控制器上的注册表中。 但是,在运行受支持的 Windows Server 版本的域控制器上,可以使用 Repadmin 在一个或多个域控制器上启用严格的复制一致性。

使用 Repadmin 实现严格的复制一致性:

使用此过程可删除运行受支持的 Windows Server 版本的域控制器上的挥之不去的对象。

单个域控制器上完成此过程至少需要加入域管理员或等效成员身份。 企业管理员中的成员身份或等效成员身份是在林中的所有域控制器上完成此过程所需的最低要求。 查看有关使用适当帐户和本地和域默认组中组成员身份的详细信息。

使用 Repadmin 启用严格的复制一致性的步骤:
  1. 以管理员身份打开命令提示符:在 “开始” 菜单上,右键单击 命令提示符,然后单击“ 以管理员身份运行”。 如果出现“用户帐户控制”对话框,请提供域管理员或企业管理员凭据(如果需要),然后单击“继续”。

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

    repadmin /regkey <DC_LIST> +strict
    
    参数 说明
    /regkey 启用 (+) 并禁用 中HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters严格复制一致性注册表项的值
    <DC_LIST> 单个域控制器的名称,或 * 将更改应用于林中的所有域控制器。 对于域控制器名称,可以使用 DNS 名称、域控制器计算机对象的可分辨名称或域控制器服务器对象的可分辨名称,例如,可分辨名称 CN=DC5、OU=域控制器、DC=contoso、DC=com 或 DNS 名称 DC5.contoso.com
    +strict 启用严格复制一致性注册表项。
  3. 如果不使用 * 对所有域控制器应用更改,请对要为其启用严格复制一致性的每个域控制器重复步骤 2。

注意

有关DC_LIST>参数语法<的更多命名选项和信息,请在命令提示符类型repadmin /listhelp中。 有关参数和参数的/regkey语法的信息,请键入 repadmin /experthelp/removelingeringobjects

使用 Regedit 启用严格的复制一致性:

作为使用 Repadmin 的替代方法,可以通过直接编辑注册表来启用严格的复制一致性。 复制一致性的设置存储在 “严格复制一 致性”条目中 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters

严格复制一致性注册表项的值如下所示:

  • 值:1(要禁用的 0)

  • 默认值:新 Windows Server 中的 1(已启用);否则为 0。

  • 数据类型:REG_DWORD

要求:

  • 若要完成该过程,必须至少具有 Domain Admins 的成员资格或同等权限。 查看有关使用适当帐户和本地和域默认组中组成员身份的详细信息。
  • 工具:Regedit.exe

注意

除非万不得已,否则建议不要直接编辑注册表。 在应用对注册表的修改之前,注册表编辑器或 Windows 不会对这些修改进行验证,因此可能会存储不正确的值。 这可能会导致系统中出现不可恢复的错误。 如有可能,请使用组策略或其他 Windows 工具(如 Microsoft 管理控制台 (MMC))来完成任务,而不是直接编辑注册表。 如果必须编辑注册表,请格外小心。

使用 Regedit 启用严格的复制一致性的步骤
  1. 以管理员身份打开 Regedit:单击“开始”,然后在“开始搜索键入 regedit。 在“开始”菜单顶部,右键单击regedit.exe,然后单击“以管理员身份运行”。 在 “用户帐户控制 ”对话框中,提供域管理员凭据,然后单击“ 确定”。

  2. 导航到 “严格复制一致性”条目。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters

  3. 将严格复制一致性条目中的值设置为 1。

确保为新升级的域控制器启用严格的复制一致性

如果要升级最初使用运行 Windows 2000 Server 的计算机创建的林,则应确保林配置为在新升级的域控制器上启用严格的复制一致性,以帮助避免挥之不去的对象。 更新林(将Active Directory 域升级到 Windows Server 2008 和 Windows Server 2008 R2 AD DS 域)后,随后添加到林的所有新域控制器都会禁用严格的复制一致性。 但是,可以实现林配置更改,这会导致新域控制器启用严格的复制一致性。 为了确保添加到林的新域控制器启用了严格的复制一致性,可以使用Ldifde.exe工具在林的配置目录分区中创建对象。 此对象负责在任何提升到林的新域控制器上启用严格的复制一致性。

你创建的对象是具有以下名称的操作 GUID:

CN=94fdebc6-8eeb-4640-80de-ec52b9ca17fa,CN=Operations,CN=ForestUpdates,CN=Configuration,DC=<ForestRootDomain>

可以在林中的任何域控制器上使用以下过程将此对象添加到配置目录分区。

Enterprise Admins 中的成员身份或同等身份是完成此过程所需的最低要求。 查看有关使用适当帐户和本地和域默认组中组成员身份的详细信息。

创建确保新域控制器上严格复制一致性的对象的步骤

  1. 在文本编辑器(如记事本)中创建以下文本文件:

    dn:
    CN=94fdebc6-8eeb-4640-80de-ec52b9ca17fa,CN=Operations,CN=ForestUpdates,CN=Configuration,DC=<ForestRootDomain>
    changetype:add
    objectClass: container
    showInAdvancedViewOnly: TRUE
    name: 94fdebc6-8eeb-4640-80de-ec52b9ca17fa
    objectCategory: CN=Container,CN=Schema,CN=Configuration,DC=<ForestRootDomain>

  2. 其中 <,ForestRootDomain> 包含林根域的所有域组件(DC=),例如 contoso.com ,对于林,DC=contoso,DC=com;对于 fineartschool.net 林,DC=fineartschool,DC=net。

  3. 以管理员身份打开命令提示符:在 “开始” 菜单上,右键单击 命令提示符,然后单击“ 以管理员身份运行”。 如果出现“用户帐户控制”对话框,请提供企业管理员凭据(如果需要),然后单击“继续”。

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

    ldifde -i -f <Path>\<FileName>
    
    参数 说明
    -i 指定导入模式。 如果未指定导入模式,则默认模式为导出。
    -f 标识导入或导出文件名。
    <Path>\<FileName> 在步骤 1 中创建的导入文件的路径和名称,例如 C:\ldifde.txt。

    有关使用 Ldifde 的信息,请参阅 LDIFDE

数据收集

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