如何排查 Windows Server 2003 中或 Windows Server 2008 中 Adamsync OBJ_CLASS_VIOLATION 时发生错误

文章翻译 文章翻译
文章编号: 923835 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

本文介绍了如何解决 OBJ_CLASS_VIOLATION 错误,当您在 Windows Server 2003 中或 Windows Server 2008 中使用 Adamsync 工具时,就会发生。

由于类定义之间的差异 Active Directory 目录服务和 ADAM 实例,会发生此错误。若要此问题的疑难解答,请按照以下各节中描述的步骤:
  • 确定属性,该对象的类
  • 当属性属于 TOP 类时解决该问题的步骤
  • 属性不属于 TOP 类时解决该问题的步骤
如果您不能解决此问题,请与 Microsoft 支持联系。

症状

您尝试使用 Active Directory 应用程序模式 (ADAM) 同步器 (Adamsync.exe) 工具来同步到基于 Windows Server 2003 的或基于 Windows Server 2008 的计算机上的 ADAM 实例在 Active Directory 对象。但是,Adamsync 日志文件中记录类似于以下内容的错误消息:
处理源条目 <guid=f9023a23e3a06d408f07a0d51c301f38> 处理范围内的条目 f9023a23e3a06d408f07a0d51c301f38 处理项: 第 X 页框架 X 项 X 计数 X,USN X。 添加目标对象 CN =TestGroup、 OU = Accounts,dc = domain,dc = com。 添加属性: sourceobjectguid,objectClass,instanceType,显示名,信息,adminDescription,displayNamePrintable,userAccountControl,代码页,countryCode,logonHours,primaryGroupID,注释,accountExpires,sAMAccountName,desktopProfile,legacyExchangeDN,userPrincipalName

出现 Ldap 错误。ldap_add_sW: 对象类冲突。 扩展的信息: 0000207D: UpdErr: DSID-0315119D,问题 6002 (OBJ_CLASS_VIOLATION) 数据-2054643804

原因

由于在类定义之间的差异 Active Directory 和 ADAM 出现此问题。 当您试图修改要包含对它的类无效的属性的对象时,会出现这种差异。例如对于该属性不在所有,定义 ADAM 架构中或定义该属性,但属性不存在于列表中的强制性或可选属性的特定类。一般情况下,第二种情况下是导致该问题的最常见的原因。

要同步的对象的类定义包含一个或多个属性在 Active Directory 中的 ADAM 中不可用。 "添加属性"部分中的"症状"部分中提到的错误消息显示在您尝试添加的属性。这些属性定义的可选或正在同步的对象的类的强制属性列表中。

例如对于"症状"一节中提到在错误信息中引用对象是 CN = TestGroup。当您查看该 CN=TestGroup 对象在活动的目录和您检查此类的属性的列表和所有父类,您看到此列表中的一个或多个属性不在列表中的强制性或可选启用 ADAM 中为此类别的属性。

注意这包括从所有父类的属性列表。

解决方案

若要解决此问题,请按照下列步骤操作。

确定属性和对象的类

  1. 验证失败的对象添加的属性的列表。您可以确定该对象的同步日志中查看错误消息失败。失败的对象始终是最后的一个对象,表明正好在错误消息之前,同步日志的末尾。例如对于该 CN=TestGroup 对象失败"症状"部分中提到的错误消息中。
  2. 确定是否在错误消息中包含 DisplayNamePrintable标记,或 ExtensionName 属性。如果其中一个属性包括在错误消息中,请参阅"解决此问题,当属性属于 TOP 类时执行"部分。如果没有属性包含错误信息中,请参阅"解决问题,当属性不属于 TOP 类时执行"部分。

当属性属于 TOP 类时解决该问题的步骤

您会发现在 Active Directory 架构中的 TOP 类包含 DisplayNamePrintable标记ExtensionName 属性。然而,在 ADAM TOP 类中不包含这些属性。但是,您不能更改在 ADAM TOP 类。因此,使用下面的方法之一来解决此问题:
  • 通过使用 <exclude>部分中,在 XML 配置文件中排除这些属性。
  • 通过 MMC 架构手动将这些属性添加到 ADAM 架构中相关的类的可选属性的列表。例如对于"症状"一节中提到在错误信息中出现故障对象是组类。因此,您必须将这些属性添加到组中的类 ADAM 可选属性列表。

属性不属于 TOP 类时解决该问题的步骤

  1. 工具 下的 ADSchemaAnalyzer,在 \ 选项 菜单单击 LDIF 生成 选项卡上的 更新使用对新的和存在元素的引用
  2. 使用 文件 菜单加载目标架构以及为基础架构的 ADAM 的 Active Directory。等待完成比较架构工具。
  3. 架构 菜单上单击 将所有元素都标记为包含
  4. 文件 菜单上单击 创建 LDIF 文件 以创建一个 LDF 文件,其中包含所做的更改。

    注意如果此 LDF 文件导入直接到 ADAM,必要的属性将可能并不添加或修改正确。此外,显示没有错误消息。请参阅"为什么您不能将 LDF 文件导入直接到 ADAM"一节的说明为什么这种情况。不导入 LDF 文件的情况下,在这种情况下转到第 5 步。
  5. 请检查您在步骤 4 中创建的 LDF 文件。专门,查看导致问题的类。例如对于查看组类。为此类节将包含的是存在于列表中的强制性或可选属性的 Active Directory 中为此类别但 ADAM 中缺少属性的列表。
  6. 在 LDF 文件中查找问题属性。若要执行此操作检查 LDF 文件中的"#attributes"部分。不导入的属性保持此部分中。通常,问题属性是在"#attributes"部分中查找的唯一属性。如果您找到问题属性,请转到步骤 8。如果找不到问题属性,请转到第 7 步。
  7. 如果从"#attributes"部分 LDF 文件中没有明显的问题属性,请按照下列步骤以查找问题属性:
    1. 当前类的所有修改都是 LDF 文件中的下一个节。这是"#Updating 存在元素"一节。在这一节下找到部分中的更新有问题的类。例如对于如果组类是不是问题所在,您会发现类似于以下内容的部分:
      # Update element: group
      dn: cn=Group,cn=Schema,cn=Configuration,dc=X
      changetype: modify
      add: mayContain
      # mayContain: adminCount
      mayContain: 1.2.840.113556.1.4.150
      # mayContain: controlAccessRights
      mayContain: 1.2.840.113556.1.4.200
      # mayContain: groupAttributes
      mayContain: 1.2.840.113556.1.4.152
      # mayContain: groupMembershipSAM
      mayContain: 1.2.840.113556.1.4.166
      -
      
      NoteSome more entries that may be located here have been excluded from this example.
      
      dn: 
      changetype: modify
      add: schemaUpdateNow
      schemaUpdateNow: 1
      
    2. 更改通过拆分项转变为每个操作的单个属性在步骤 4a 中找到的项。例如对于通过使用类似于以下的项来更改步骤 7a 在示例中的条目:
      # Update element: group
      dn: cn=Group,cn=Schema,cn=Configuration,dc=X
      changetype: modify
      add: mayContain
      # mayContain: adminCount
      mayContain: 1.2.840.113556.1.4.150
      -
      
      # Update element: group
      dn: cn=Group,cn=Schema,cn=Configuration,dc=X
      changetype: modify
      add: mayContain
      # mayContain: controlAccessRights
      mayContain: 1.2.840.113556.1.4.200
      -
      
      dn: cn=Group,cn=Schema,cn=Configuration,dc=X
      changetype: modify
      add: mayContain
      # mayContain: groupAttributes
      mayContain: 1.2.840.113556.1.4.152
      -
      
      dn: cn=Group,cn=Schema,cn=Configuration,dc=X
      changetype: modify
      add: mayContain
      # mayContain: groupMembershipSAM
      mayContain: 1.2.840.113556.1.4.166
      -
      
      Note Some more entries that may be located here have been excluded from this example.
      
      
      dn: 
      changetype: modify
      add: schemaUpdateNow
      schemaUpdateNow: 1
      
  8. 保存 LDF 文件。
  9. 通过使用提供的 LDF 文件开头的命令,导入到 ADAM 架构 LDF 文件。
  10. 查看由 Ldifde 实用程序显示的报表。现在,Ldifde 将报告具有属性未导入的发生的错误。错误信息将类似于下面的示例信息:
    C:\WINDOWS\ADAM>ldifde -i -u -f c:\data\problem\KBtest_modified.ldf -s localhost:50010 -j . -c "cn=Configuration,dc=X" #configurationNamingContext
    Connecting to "localhost:50010"
    Logging in as current user using SSPI
    Importing directory from file "c:\data\problem\KBtest_modified.ldf"
    Loading entries.
    Add error on line 15: Already Exists
    The server side error is: 0x2071 An attempt was made to add an object to the
    ectory with a name that is already in use.
    The extended server error is:
    00002071: UpdErr: DSID-0305030D, problem 6005 (ENTRY_EXISTS), data 0
    

    注意通过查看错误报告中的行号指示找到 LDF 文件中的问题属性。
  11. 使用此错误的信息来查找问题属性并解决该问题。请按照下列步骤来尝试解决该问题:
    1. 通过查看错误报告中的行号指示找到 LDF 文件中的问题属性。失败属性可能具有在该显示名称中的"DUP-"前缀。
    2. 注意对象标识符 (OID) 的属性,并查找此 ADAM 中的对象标识符。
    3. 查找属性中具有相同的对象标识符的 ADAM。
    4. 请与在 ADAM,若要查找的任何差异 LDF 文件中的属性相比较。例如对于 $ 属性可能在不同的显示名称但相同的对象标识符。
    5. 决定要保留的属性,然后更正另一个。例如对于您可以从 LDF 文件中删除条目,或者您可以更正 ADAM 属性项。也可以通过在 XML 配置文件中使用 <exclude>部分同步中排除问题属性。
  12. 在 Active Directory 中或 ADAM 架构中或从 LDF 文件中删除该属性后,问题属性被更正后,修改 LDF 重新导入文件。现在应该可导入操作的成功。如果不解决此问题可能导致问题的另一个属性。重复步骤 10 到 12,直到导入的所有属性。

诊断日志记录

当您找到问题属性时,它可能不是很明显出了什么问题它。例如对于您可能无法找到重复的对象标识符或一个不同的显示名称项。不导入问题属性,时可通过启用调试日志记录为 LDAP 接口获取有关失败的详细信息。若要这样做,请按照下列步骤操作:
  1. 若要获取有关 Ldifde 故障的详细信息,打开 LDAP 登录 ADAM。若要执行此操作
    Category 16 LDAP Interface events
    注册表项的值更改为 5。该注册表项位于以下注册表子项下:
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ADAM_instanceName\Diagnostics
  2. 重新导入 LDF 文件。
  3. 查看事件日志中有错误。
  4. 完成疑难解答后,重置为
    Category 16 LDAP Interface events
    的注册表项值为 0。否则,在事件日志,将会充。

请与 Microsoft 支持部门联系

如果问题未解决,完成本文中的步骤之后,请与 Microsoft 支持部门联系。单击以下链接以访问 Microsoft 支持:
http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

状态

此行为是设计使然。

更多信息

若要同步 Active Directory 中的数据到 ADAM 使用 Adamsync 工具,请按照下列步骤操作:
  1. 单击 开始,指向 所有程序、 都指向 ADAM,然后单击 $ ADAM 工具命令提示符
  2. 命令提示符键入下面的命令,然后按 ENTER 键:
    adamsync /fs Server_Nameport_number configurationName /log log_file_name.log
有关如何使用 Adamsync 工具,请访问以下 Microsoft 网站的详细信息:
http://technet2.microsoft.com/windowsserver2008/en/library/ca49911b-d004-4497-b369-6506495fb30f1033.mspx?mfr=true

http://technet2.microsoft.com/windowsserver/en/library/809c8d09-cc99-4e7e-a80d-e77c5aefb3211033.mspx?mfr=true

为什么您不能直接插入 ADAM 导入 LDF 文件

如果您在步骤 1 中在"要解决此问题,当属性不属于 TOP 类时执行"部分下 ADAM 创建的 LDF 文件导入,这些属性将仍未添加到 ADAM 中的属性列表。您可以通过使用 ADAM 架构 MMC 或 ADSIEDIT 检查架构来验证此行为。出现此现象的原因在于,Ldifde 以静默方式导入操作将失败。当前,Ldifde 不报告错误。它以静默方式因失败 ADSchemaAnalyzer 构造 LDF 文件的方式。ADSchemaAnalyzer 使用 ntdsschemaaddntdsSchemamodify 命令。这些命令打开 permissive LDAP 控件。这意味着任何故障无提示。

此外,为每个类,要添加到可选属性列表中的所有属性都添加一次添加/修改的操作。因此,如果存在问题,则添加该的属性之一将失败,整个操作并添加在列表中没有属性。因此,必须采取其他步骤,以查找问题属性。

通常,失败的可能的原因是属性或某些其他区别在 Active Directory 和 ADAM 属性定义中的一个重复的对象标识符。在 Windows Server 2003,ADSchemaAnalyzer 使用属性和类的 LdapDisplayName 比较 Active Directory 和 ADAM。这表示重复的 oid 的可能会丢失,和属性可被视为新的属性,如果在 LDapDisplayName ADAM 中不存在。在 Windows Server 2008 (Active directory/LDS) ADSchemaAnalyzer 使用对象标识符,而将报告冲突,如果找到。

属性

文章编号: 923835 - 最后修改: 2008年7月16日 - 修订: 2.0
这篇文章中的信息适用于:
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Windows Server 2003 Enterprise Edition
  • Microsoft Windows Server 2003, Enterprise x64 Edition
  • Windows Server 2008 Datacenter
  • Windows Server 2008 Enterprise
  • Windows Server 2008 Standard
关键字:?
kbmt kbprb kbtshoot KB923835 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 923835
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com