本文提供了一个解决方案,用于解决在发生Active Directory 域服务(AD DS)入站复制时获取事件 ID 2108 和 1084 的问题。
原始 KB 数: 837932
现象
发生Active Directory 域服务(AD DS)的入站复制时,目标域控制器会在目录服务日志中记录以下事件:
Event ID 1084: Internal event: Active Directory Domain Services could not update the following object with changes received from the following source directory service. This is because an error occurred during the application of the changes to Active Directory Domain Services on the directory service.
Object: CN=<cn path>
Object GUID: <objectguid>
Source directory service: NTDSA._msdcs.<forest root DNS domain name>
Synchronization of the directory service with the source directory service is blocked until this update problem is corrected.
This operation will be tried again at the next scheduled replication.
User Action:
Restart the local computer if this condition appears to be related to low system resources (for example, low physical or virtual memory).
Additional Data:
Error value: <error code> <error string>
注意
在文本中 Error value
, <错误代码> 和 <错误字符串> 表示日志条目中显示的实际值。
Event ID 2108: This event contains REPAIR PROCEDURES for the 1084 event which has previously been logged. This message indicates a specific issue with the consistency of the Active Directory Domain Services database on this replication destination. A database error occurred while applying replicated changes to the following object. The database had unexpected contents, preventing the change from being made.
Object: CN=<cn path>
Object GUID: <objectguid>
Source directory service: NTDSA._msdcs.<forest root DNS domain name>
注意
这是事件 1084 的合作伙伴事件。
原因
当域控制器无法将事务性更改写入 Active Directory 数据库的本地副本时,会发生这些事件。
解决方法
若要解决该问题,请执行以下步骤。 在进行更改的每个步骤后重试复制操作。
确保托管 Active Directory 数据库的卷上有足够的可用磁盘空间,然后重试该操作。 按照以下步骤释放其他磁盘空间:
将不相关的文件移动到另一个卷。
执行系统状态备份。 此过程可减小事务日志文件的大小。 有关详细信息,请参阅 如何使用备份功能来备份和还原数据。
对 Active Directory 执行脱机碎片整理。 有关详细信息,请参阅 如何对 Active Directory 数据库执行脱机碎片整理。
确保托管 Ntds.dit 文件和事务日志文件的物理驱动器未打开 NTFS 文件系统压缩。 若要确认这一点,请右键单击“我的计算机”中的驱动器号,并确保 未选中“压缩驱动器以节省磁盘空间 ”复选框。
确保托管 Ntds.dit 文件和事务日志文件的物理驱动器专门从远程和本地防病毒程序中排除。 有关详细信息,请参阅:
如果目标域控制器包含全局目录,并且错误发生在只读分区之一中,请使用下列方法之一来帮助解决问题:
方法 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:配置域控制器,使其不再是全局编录服务器。 执行以下步骤:
- 选择“开始”,指向“管理工具”,然后选择“Active Directory 站点和服务”。
- 找到默认-第一站点名称\ 服务器\ domain_controller_name\ NTDS 设置子树。
- 右键单击“NTDS 设置”,再选择“属性”。
- 选中以清除 “全局目录 ”复选框,然后选择“ 确定”。
方法 3
如果错误发生在程序分区中,请使用 Ntdsutil.exe 工具更改承载程序分区的副本。
使用第三方实用工具(如 ProcMon 实用工具)来确定程序或用户是访问 Active Directory 数据库、事务日志文件 还是Edp.tmp 文件。 如果存在文件访问活动,请停止负责活动的服务。 有关 ProcMon 实用工具的详细信息,请参阅 ProcMon。
确定问题是否与目标域控制器上的 Active Directory 对象的父级相关。 为此,请按照下列步骤进行操作:
在源域控制器上,暂时将事件 1084 中引用的对象移动到组织单位(OU)容器。 OU 必须与当前容器无关。 例如,将对象移到域根目录下的新容器。
如果在移动对象后完成复制,请将对象移回其原始容器。
强制安全描述符传播器在源域控制器和目标域控制器上存在的数据库中重新生成对象容器祖先。 为此,请按照下列步骤进行操作:
在安装了 RSAT 的域控制器或 Windows 客户端上打开提升的命令提示符。
键入ldp.exe DC 名称>,然后按 Enter。<
选择“连接>连接”,然后键入要连接到的服务器的名称。
注意
你将通过端口 389 进行 Active Directory 连接。
选择“连接>绑定”,然后键入管理用户名、密码和域。 (必须使用域管理员或企业管理员凭据。选择“ 确定”。
在 “浏览 ”菜单上,选择“ 修改”。 将 DN 文本框留空。 在 “属性 ”文本框中,键入 FixUpInheritance。 在“值”文本框中选择“是”。
在 “操作 ”区域中,选择“ 添加”。
选择 Enter 以填充 “条目列表 ”区域。
注意
在 “条目列表 ”区域中, 将显示 [Add]fixupinheritance:yes 。
选择“运行”。
注意
右窗格现在显示 “已 修改”状态,然后安全描述符传播器启动。 安全描述符传播器的运行时取决于 Active Directory 数据库的大小。 当 NTDS 性能对象中的 DS 安全传播事件计数器返回到零时,该过程将完成。
选择“关闭>连接>退出”。
在源域控制器上,在命令提示符处键入
repadmin /showmeta distinguished_name_path
,然后查看事件 1084 中引用的可分辨名称路径的对象元数据。 在目标域控制器上重复此步骤。 查找包括但不限于以下不一致的值:- 对象上显示的属性的名称和编号不正确
- 原始时间或日期戳不正确
- 本地更新序列号不正确(USN)
不正确的值可能表示承载对象的数据库页出现问题。
若要在可分辨名称路径引用实时对象时使用 Repadmin.exe 工具,请在命令提示符处键入以下内容:
repadmin /showmeta remote_domain_controller_name distinguished_name_path_of_reference _object
如果对象位于已删除的对象容器中,或者无法使用Repadmin.exe工具查找对象,请使用对象的 GUID 引用来查找对象。 此 GUID 在事件 1084 中引用。 为此,请在命令提示符处键入以下内容:
repadmin /showmeta remote_domain_controller_name "GUID_for_the_object that_is_referenced_in_Event_ID_1084"
例如,如果 Event 1084 和 Event 2108 引用 GUID 为 b49cd496-98a2-4500-bb08-58550c2f79ac 的对象,请键入
repadmin /showmeta "<GUID=b49cd496-98a2-4500-bb08-58550c2f79ac>"
。注意
需要引号和方括号。
使用Ntdsutil.exe工具对源域控制器上的 Active Directory 数据库执行完整性检查。
在目录服务还原模式(DSRM)中启动计算机之前,请获取脱机管理员帐户和 DSRM 帐户的密码。 如果 DSRM 帐户密码由 Windows LAPS 管理,请使用 Get-LapsADPassword 获取密码。
如果不知道管理员帐户密码,请先重置目录服务还原模式密码,然后再在此模式下启动。
使用 Ntdsutil Set Directory Services 还原模式密码命令。
有关如何更改密码的详细信息,请参阅 启动基于 Windows 或基于 SBS 的域控制器时的“目录服务无法启动”错误消息。
重启源域控制器,然后按 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 正常”选项重启计算机,然后重试从源域控制器复制到受影响的目标域控制器的复制。
如果这些步骤不成功,并且复制错误继续,请降级域控制器,确认物理驱动器和托管 Ntds.dit 文件和磁盘子系统的卷的完整性,然后再次升级域控制器。 使用相同的计算机名称。
使用 ntdsutil files compact 命令对 Active Directory 数据库执行脱机碎片整理。 有关详细信息,请参阅 执行 Active Directory 数据库的 脱机碎片整理。
在命令提示符下,键入以下命令,然后按 Enter:
ntdsutil "semantic database analysis" "go"
注意
此示例中的引号是使用单个命令行参数运行语义数据库分析命令所必需的。
如果报告了错误,请键入
ntdsutil go fixup
,然后按 Enter。
数据收集
如果需要Microsoft支持方面的帮助,建议按照使用 TSS 收集 Active Directory 复制问题的信息中所述的步骤收集信息。
第三方信息免责声明
本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 不对这些产品的性能或可靠性提供任何明示或暗示性担保。