本文提供了 Active Directory 复制错误 8451 的解决方法:“复制操作遇到数据库错误”。
适用于: 所有受支持的 Windows Server 版本
原始 KB 数: 2645996
注意
家庭用户:本文仅适用于技术支持代理和 IT 专业人员。 如果你正在寻找解决问题的帮助,请 询问Microsoft社区。
现象
本文介绍Active Directory 域服务(AD DS)操作失败并生成错误 8451 的情况的症状和原因:“复制操作遇到数据库错误。本文还提供了此问题的解决方法。
可能会遇到以下症状之一:
你会看到一个或多个屏幕上的错误消息、记录的事件或诊断输出,用于标识数据库错误。 此错误的可能格式包括以下内容。
十进制代码 十六进制代码 文本代码 错误消息 8451 0x2103 ERROR_DS_DRA_DB_ERROR 复制操作遇到数据库错误。 -1018 0xfffffc06 JET_errReadVerifyFailure 数据库页上的校验和错误。 -1047 0xfffffbe9 JET_errInvalidBufferSize 数据缓冲区与列大小不匹配。 -1075 0xfffffbc JET_errOutOfLongValueID 长值 ID 计数器已达到最大值(执行脱机碎片整理以回收可用且未使用的 LongValueID)。 -1206 0xfffffb4a JET_errDatabaseCorrupted 非数据库文件或损坏的数据库。 -1414 0xfffffa7a JET_errSecondaryIndexCorrupted 辅助索引已损坏。 必须对数据库进行碎片整理。 -1526 0xfffffa0a JET_errLVCorrupted 长值树中遇到的损坏。 -1601 0xfffff9bf JET_errRecordNotFound 找不到密钥。 -1603 0xfffff9b JET_errNoCurrentRecord 货币不在记录中。 Dcpromo.exe失败并生成错误 8451。
用户界面显示以下消息:操作失败,因为:
Active Directory 域服务无法复制目录分区<来自远程Active Directory 域控制器<帮助程序 DC> 的故障分区>的 DN 路径。<dns 域名>。<顶级域>。
复制操作遇到数据库错误。
Dcpromo.log文件包含以下信息:
<contoso.com 的日期><时间> [INFO] NstdInstall 返回 8451
<日期><时间> [INFO] DsRolepInstallDs 返回 8451
<日期><时间> [ERROR] 无法安装到目录服务 (8451)
<日期><时间> [INFO] 启动服务 NETLOGONRepadmin.exe报告复制尝试失败,状态为 8451。 通常引用 8451 状态的Repadmin.exe命令包括但不限于:
Repadmin /kcc
Repadmin /rehost
Repadmin /replicate
Repadmin /replsum
Repadmin /showrepl
Repadmin /showreps
Repadmin /showutdvec
Repadmin /syncall
有关如何使用 Repadmin 排查复制问题的详细信息,请参阅 使用 Repadmin 监视和排查 Active Directory 复制问题。
以下示例显示命令的
repadmin /showreps
输出,指示从 CONTOSO-DC2 到 CONTOSO-DC1 的入站复制失败并生成了“复制访问被拒绝”消息。Default-First-Site-Name\CONTOSO-DC1
DSA 选项:IS_GC
网站选项:(无)
DSA 对象 GUID:b6dc8589-7e00-4a5d-b688-045aef63ec01
DSA 调用ID:b6dc8589-7e00-4a5d-b688-045aef63ec01
=~ 入站邻居======================================
DC=contoso,DC=com
Default-First-Site-Name\CONTOSO-DC2 via RPC
DSA 对象 GUID:74fbe06c-932c-46b5-831b-af9e31f496b2
上次尝试 @ <日期><时间> 失败,结果 8451 (0x2103):
复制操作遇到数据库错误。
连续失败(秒)。
上次成功 @ <日期><时间>。
事件查看器列出了引用 8451 错误的一个或多个事件。 下表列出了引用 8451 错误的常见事件的事件源和事件 ID(在事件源 + 事件 ID 顺序中)。
事件源 事件 ID 事件消息 Microsoft-Windows-ActiveDirectory_DomainService 1039,出现扩展错误 8451 内部事件:Active Directory 域服务无法处理以下对象。 Microsoft-Windows-ActiveDirectory_DomainService 1084,出现扩展错误 8451 内部事件:Active Directory 无法通过从以下源域控制器接收的更改更新以下对象。 这是因为在对域控制器上的 Active Directory 进行更改期间发生了错误。 Microsoft-Windows-ActiveDirectory_DomainService 1308,出现扩展错误 8451 知识一致性检查器(KCC)检测到连续尝试通过以下目录服务进行复制失败。 Microsoft-Windows-ActiveDirectory_DomainService 1699,出现扩展错误 8451 本地域控制器未能检索为以下目录分区请求的更改。 因此,无法在以下网络地址将更改请求发送到域控制器。 NTDS 复制 2108,扩展错误 8451,辅助错误值-1075 此事件包含以前记录的 1084 事件的 REPAIR PROCEDURES。 此消息指示此复制目标上 Active Directory 数据库的一致性存在特定问题。 将复制的更改应用于以下对象时发生数据库错误。 数据库具有意外的内容,从而阻止进行更改。 对象:CN= justintu@contoso.com
,OU=marketing,OU=5thWard,OU=休斯顿,DC=Contoso,DC=com 对象 GUID: 2843919c-345c-4f57-bc1a-4ed5acbcf9e2 源域控制器:173ee10f-4c28-4acd-a2d7-61af8d4d3010._msdcs。Contoso.com 用户操作如果这些操作均未成功且复制错误继续,则应降级此域控制器并再次升级它。 其他数据主错误值:8451 复制操作遇到数据库错误。 次要错误值:-1075NTDS 复制 2108,扩展错误 8451,辅助错误值-1526 此事件包含以前记录的 1084 事件的 REPAIR PROCEDURES。 此消息指示此复制目标上 Active Directory 数据库的一致性存在特定问题。 将复制的更改应用于以下对象时发生数据库错误。 数据库具有意外的内容,从而阻止进行更改。 对象:CN= justintu@contoso.com
,OU=marketing,OU=5thWard,OU=休斯顿,DC=Contoso,DC=com 对象 GUID: 2843919c-345c-4f57-bc1a-4ed5acbcf9e2 源域控制器:173ee10f-4c28-4acd-a2d7-61af8d4d3010._msdcs。Contoso.com 用户操作如果这些操作均未成功且复制错误继续,则应降级此域控制器并再次升级它。 其他数据主错误值:8451 复制操作遇到数据库错误。 次要错误值:-1526NTDS 复制 2108,扩展错误 8451,次要错误值 -1414 此事件包含以前记录的 1084 事件的 REPAIR PROCEDURES。 此消息指示此复制目标上 Active Directory 数据库的一致性存在特定问题。 将复制的更改应用于以下对象时发生数据库错误。 数据库具有意外的内容,从而阻止进行更改。 对象:CN= justintu@contoso.com
,OU=marketing,OU=5thWard,OU=休斯顿,DC=Contoso,DC=com 对象 GUID: 2843919c-345c-4f57-bc1a-4ed5acbcf9e2 源域控制器:173ee10f-4c28-4acd-a2d7-61af8d4d3010._msdcs。Contoso.com 用户操作如果这些操作均未成功且复制错误继续,则应降级此域控制器并再次升级它。 其他数据主错误值:8451 复制操作遇到数据库错误。 次要错误值:-1414NTDS General 1039,出现扩展错误 8451。 内部事件:Active Directory 无法处理以下对象。 NTDS KCC 1925,出现扩展错误 8451 尝试为以下可写目录分区建立复制链接失败。 NTDS 复制 1084,出现扩展错误 8451 内部事件:Active Directory 无法通过从以下源域控制器接收的更改更新以下对象。 这是因为在对域控制器上的 Active Directory 进行更改期间发生了错误。 NTDS 复制 1699,出现扩展错误 8451 本地域控制器未能检索为以下目录分区请求的更改。 因此,无法在以下网络地址将更改请求发送到域控制器。 在域控制器上增加 NTDS 诊断日志记录级别时,事件查看器列出了与 8451 错误相关的其他事件。 下表列出了经常伴随其他包含 8451 错误的事件的事件源和事件 ID。
事件源 事件 ID 事件消息 内部处理 1481 错误-1601 内部错误:对象上的操作失败。 其他数据:错误值: 2 000020EF: NameErr: DSID-032500E8, 问题 2001 (NO_OBJECT), 数据 -1601, 最佳匹配项: 内部处理 1173 错误-1075 内部事件:Active Directory 遇到以下异常和相关参数。 异常:e0010004 参数:0 其他数据错误值: -1075 内部 ID: 205086d 内部处理 1173 错误-1526 内部事件:Active Directory 遇到以下异常和相关参数。 异常:e0010004 参数:0 其他数据错误值:-1526 内部 ID:205036b 内部处理 1173 错误-1603 内部事件:Active Directory 遇到以下异常和相关参数。 异常:e0010004 参数:0 其他数据错误值:-1603 内部 ID:2050344 NTDS ISAM 474 错误-1018 数据库页从偏移量为 8192(0x00002000) 字节的偏移量3846455296(0x00000000e5444000)的文件“E:\NTDS\Data\ntds.dit”读取,因为页校验和不匹配,验证失败。 预期的校验和323677604(0x134aeda4),实际校验和2081515684(0x7c1168a4)。 读取操作将失败,并出现错误 -1018 (0xfffffc06)。 如果此条件仍然存在,请从以前的备份还原数据库。 此问题可能是由于硬件故障造成的。 请联系硬件供应商,进一步帮助诊断问题。 NTDS ISAM 488 NTDS (396) NTDSA:在数据库 C:\WINDOWS\NTDS\ntds.dit(4621,7905)的表数据表中检测到的数据不一致。 运行 Dcdiag.exe 实用工具时,它会生成类似于:
开始测试:复制
* 复制检查
[复制检查,<DC 名称>] 最近的复制尝试失败:
从 <源 DC> 到 <目标 DC>
命名上下文: <命名上下文失败的 DN 路径>
复制生成了错误(8451):
复制操作遇到数据库错误在 Active Directory 站点和服务中,右键单击源 DC 的连接对象并选择“ 立即复制”时,该命令将失败并生成类似于以下内容的消息:
尝试将命名上下文 <%directory 分区名称%>从域控制器<源 DC 同步到域控制器<目标 DC>> 期间发生以下错误:
“复制操作遇到数据库错误。”
该操作不会继续。
如何解码错误代码
可以使用 Microsoft错误查找工具 解码本文中所述的错误代码。 解码与 8451 错误和随附的错误相关的错误代码将生成以下信息:
C:>err 8451
for decimal 8451 / hex 0x2103:
ERROR_DS_DRA_DB_ERROR winerror.h
复制操作遇到数据库错误。
为“8451”找到的 2 个匹配项C:>err -1414
for decimal -1414 / hex 0xfffffa7a:
JET_errSecondaryIndexCorrupted esent98.h
/辅助索引已损坏。必须对数据库进行重整/
为“-1414”找到的 1 个匹配项C:>err -1526
for decimal -1526 / hex 0xfffffa0a:
JET_errLVCorrupted esent98.h
/长值树中遇到的损坏/
为“-1526”找到的 1 个匹配项C:>err -1603
for decimal -1603 / hex 0xfffff9bd:
JET_errNoCurrentRecord esent98.h
/货币不在记录中/
为“-1603”找到的 1 个匹配项C:>err -1075
for decimal -1075 / hex 0xfffffbcd:
JET_errOutOfLongValueIDs esent98.h
/长值 ID 计数器已达到最大值。 (执行脱机碎片整理以回收免费/未使用
LongValueIDs)/
为“-1075”找到的 1 个匹配项C:>err -1601
for decimal -1601 / hex 0xfffff9bf:
JET_errRecordNotFound esent98.h
/找不到密钥/
为“-1601”找到的 1 个匹配项C:>err -1047
for decimal -1047 / hex 0xfffffbe9:
JET_errInvalidBufferSize esent98.h
/数据缓冲区与列大小不匹配/
为“-1047”找到的 1 个匹配项C:>err -1018
for decimal -1018 / hex 0xfffffc06:
JET_errReadVerifyFailure ese.h
/数据库页上的校验和错误/
JET_errReadVerifyFailure esent98.h
/* 数据库页上的校验和错误 */
为“-1018”找到的 2 个匹配项C:>err -1206
for decimal -1206 / hex 0xfffffb4a:
JET_errDatabaseCorrupted esent98.h
/非数据库文件或损坏的数据库/
为“-1206”找到的 1 个匹配项
原因
状态 8451:“复制操作遇到数据库错误”具有多个根本原因,包括以下原因:
- Active Directory 数据库或 Active Directory 数据库索引可能已损坏。 原因可能如下:
- 硬件故障:
- 磁盘
- 控制器
- 控制器缓存
- 过时的驱动程序:
- 控制器
- 过时的固件:
- 计算机 BIOS
- 控制器
- 磁盘
- 突然断电。
- 挥之不去的对象。
- 长值 ID 计数器已达到其最大值:
- ESE 列类型
JET_coltypLongText
,JET_coltypLongBinary
称为长值列类型。 这些列是大型字符串和大型二进制对象,这些对象可能存储在远离主索引的 B+ 树中。 当长值与主记录分开存储时,它们会以长值 ID (LID) 为内部键键。
- ESE 列类型
- msExchSecurityDescriptor 属性中的安全描述符无效。
- 硬件故障:
解决方法
重要
请认真遵循本部分所述的步骤。 如果注册表修改不正确,可能会发生严重问题。 在修改注册表之前,请备份注册表,以便在出现问题时可以还原。
如何解决该问题的单个匹配项
如果错误只发生在一个域控制器上,并且似乎是一个隔离的问题,最好的和最快的解决方法是对受影响服务器上的数据库进行脱机碎片整理。 有关如何执行此操作的信息,请参阅 如何对 Active Directory 数据库执行脱机碎片整理。
如果脱机碎片整理无法解决问题,请降级,然后重新排列受影响的域控制器。 有关如何执行此操作的信息,请参阅 降级域控制器和域。
如何解决定期问题
如果问题递归,请收集一些诊断数据。
在 5 级别为复制事件和内部处理启用 NTDS 诊断日志记录。
若要增加 NTDS 诊断日志记录,请将以下REG_DWORD目标域控制器的注册表中的以下值更改为以下注册表子项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics
将以下条目的值设置为 5:
- 复制事件
- 内部处理
注意
级别 5 日志记录非常详细。 问题解决后,这两个键的值应还原为默认值 0 。 应筛选目录服务事件日志以隔离和标识这些事件。
有关用于描述Microsoft软件更新的标准术语的详细信息,请参阅以下知识库文章:
查看从增加的日志记录中为错误值生成的新事件的事件日志,这些错误将为原始 8451 错误提供明确视图。 例如,具有错误值为 -1526 的内部处理事件 ID 1173 表示长值树中存在损坏。
根据增加的日志记录中的其他信息,请参阅下表以了解潜在的解决方法。
十进制代码 十六进制代码 文本代码 错误消息 潜在解决方法 -1018 0xfffffc06 JET_errReadVerifyFailure 数据库页存在校验和错误 检查硬件、固件和驱动程序。 从备份还原。降级/提升。 -1047 0xfffffbe9 JET_errInvalidBufferSize 数据缓冲区与列大小不匹配 832851入站复制失败,域控制器上出现事件 ID:1699、错误 8451 或 jet 错误 -1601 注意: 此修补程序不再可用。 -1075 0xfffffbcd JET_errOutOfLongValueIDs 长值 ID 计数器已达到最大值。 (进行脱机碎片整理以回收免费或未使用 LongValueIDs
)执行脱机碎片整理。 -1206 0xfffffb4a JET_errDatabaseCorrupted 非数据库文件或损坏的数据库 检查硬件、固件和驱动程序。 运行 Esentutl/k 命令。 运行 Ntdsutil 文件完整性和语义数据库分析(SDA)命令,然后执行脱机碎片整理。否则,请从备份还原或降级/提升。 -1414 0xfffffa7a JET_errSecondaryIndexCorrupted 辅助索引已损坏。 必须对数据库进行碎片整理。 执行脱机碎片整理。 -1526 0xfffffa0a JET_errLVCorrupted 长值树中遇到损坏 检查硬件、固件和驱动程序。 Esentutl /k
运行命令。 运行 Ntdsutil** 文件完整性和 SDA 命令,然后执行脱机碎片整理。 否则,请从备份还原或降级和提升。-1601 0xfffff9bf JET_errRecordNotFound 找不到键 检查硬件、固件和驱动程序。 Esentutl /k
运行命令。 运行 Ntdsutil 文件完整性和 SDA 命令,然后执行脱机碎片整理。否则,请从备份还原或降级和升级。-1603 0xfffff9bd JET_errNoCurrentRecord 货币不在记录中 检查硬件、固件和驱动程序。 Esentutl /
运行 k 命令。 运行 Ntdsutil 文件完整性和 SDA 命令,然后执行脱机碎片整理。否则,请从备份还原或降级和升级。8451 0x2103 ERROR_DS_DRA_DB_ERROR 复制操作遇到数据库错误 检查硬件、固件和驱动程序。 Esentutl /k
运行命令。 运行 Ntdsutil 文件完整性和 SDA 命令,然后执行脱机碎片整理。 否则,请从备份还原或降级/提升。如果所有这些方法都失败,请从备份还原域控制器,或将其降级,然后重新命名。
详细信息
从下到上验证垂直喷气式数据库堆栈(仅在基础层分级为“良好”后继续到下一层),这与 TCP 相同。
层 | Ntdsutil 命令 | Esentutl 命令 |
---|---|---|
(1) 物理一致性 | 无等效项 | Esentutl /k |
(2) 可扩展存储引擎 (ESE) 逻辑一致性 | Ntdsutil、 文件、 完整性 | Esentutl /g |
(3) 应用程序逻辑一致性 | Ntdsutil、语义数据库分析 + Ntdsutil、compact | SDA + Esentutl /d 无等效项 |
数据收集
如果需要Microsoft支持方面的帮助,建议按照使用 TSS 收集 Active Directory 复制问题的信息中所述的步骤收集信息。