“无法将目录数据类型转换为本机 DS 数据类型或从本机 DS 数据类型转换”错误

本文有助于修复错误“无法将目录数据类型转换为本机 DS 数据类型或从本机 DS 数据类型转换”。

适用于:Windows Server 2019、Windows Server 2016、Windows Server 2012 R2
原始 KB 数: 907462

症状

你正在运行或管理使用 Windows 中 Active Directory 目录服务中信息的应用程序。 当应用程序使用链接属性的信息时,可能会收到错误。 例如,你可能会收到以下错误:

无法将目录数据类型转换为/从本机 DS 数据类型转换。

在这种情况下,使用 LDIFDE 实用工具 (Ldifde.exe) 导出受影响的对象时,会列出一个属性。 但是,该属性没有值。

此值较长时,这可能是预期行为。 但输出中的下一行具有下一个属性。 对于组及其 managedBy 属性,输出可能如下所示:
...
showInAddressBook: <通讯簿对象 DN>
managedBy:
legacyExchangeDN: <X500 name>
groupType: -2147483640
...

在具有 RootDSE 命令谓词 dumpdatabase 的数据库转储中,受影响的组将如下所示:

38661 29827 1 1790 true - - 4 3 Group-DN- 655368 6d03f309-ded2-41d5-9794-081d40343876 4
objectclass:655368,65536
DNT Base BDNT DelTime DeactiveTime USNChanged NCDNT 数据
38661 1 38662 - - 55247898 1790 -
38661 36 2 - - - - -

链接属性 ID 始终为 36,链接伙伴始终为 2。
有关如何转储数据库的信息,请参阅 如何使用 Active Directory 的联机 Dbdump 功能

原因

应用程序可以添加引用 Active Directory 数据库的内部根对象的对象链接。 此对象没有可用于应用程序的名称或任何其他属性。 因此,客户端应用程序显示不指示问题原因的错误消息。

解决方案

如果使用运行 Windows Server 2003 和 Service Pack 1 的域控制器,则不会出现此问题。 但具有此无效链接的对象仍在数据库中。 搜索 NTDS 时,可以找到域控制器受影响的组。DMP 文件,如下所示:

findstr /i /c:“ 36 2 - - ” ntds.dmp
38661 36 2 - - - - -

Windows Server 2003:

无法通过删除 属性来解决问题。 如果删除 属性,则会在 Application Directory Services 日志中记录以下错误:

事件类型:错误
事件源:NTDS 复制
事件类别:复制
事件 ID:1694
说明:
Active Directory 无法使用从以下源域控制器收到的属性值更改来更新以下对象。 这是因为在本地域控制器上将更改应用到 Active Directory 期间发生了错误。
对象:
<group DN>
对象 GUID:
<GUID>
源域控制器:
<基于 GUID 的 DC 名称>
属性:
managedBy:
属性值:
[]
属性值 GUID:
00000000-0000-0000-0000-000000000000
目前:
0
将在下一次计划的复制中再次尝试此操作。 在更正更新问题之前,将阻止本地域控制器与源域控制器的同步。
其他数据
错误值:
复制系统遇到内部错误。

如果记录了此错误,则对象处于中断状态。 若要实现原始状态或删除对象,只能对对象运行权威还原。 若要修复表现出此行为的对象,建议使用 LDIFDE 实用工具删除并重新生成对象。

警告

删除对象时,会删除所有后退链接。

如果必须保留无法设置值的某些属性(例如 objectSid 属性或 SidHistory 属性),请删除并取消删除该对象。 (Windows Server 2003 Service Pack 1 在删除对象时保留 SidHistory 属性。) 删除和取消删除对象时,无需运行语义检查器。

但是,目前不存在用于恢复属性和回退链接的工具。 若要还原组成员身份,可以使用 Groupadd.exe 工具。 有关详细信息,请单击以下文章编号以查看 Microsoft 知识库中的文章:

840001 如何在 Active Directory 中还原已删除的用户帐户及其组成员身份

如果使用 Microsoft 预配系统,则可以使用系统来恢复属性和回退链接。

某些备份和恢复应用程序可能会提供一种更方便的方式来删除这些有问题的属性。 应用程序必须允许在还原操作期间选择属性。 例如,在还原已删除的对象时,应用程序必须允许排除 managedBy 属性。

状态

Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。 此问题首先在 Microsoft Windows Server 2003 Service Pack 1 中得到更正。