Solución de problemas de un error de OBJ_CLASS_VIOLATION en Adamsync

En este artículo se describe cómo solucionar un error de OBJ_CLASS_VIOLATION que se produce cuando se usa la herramienta Adamsync en Windows Server.

Se aplica a: Windows Server 2012 R2
Número de KB original: 923835

Resumen

Este error se produce debido a las diferencias de definición de clase entre el servicio de directorio de Active Directory y la instancia de ADAM. Para solucionar este problema, siga los pasos que se describen en las secciones siguientes:

  • Determinación del atributo y la clase del objeto
  • Pasos para resolver el problema cuando los atributos pertenecen a la clase TOP
  • Pasos para resolver el problema cuando los atributos no pertenecen a la clase TOP

Síntomas

Intenta usar la herramienta de sincronizador de modo de aplicación de Active Directory (ADAM) (Adamsync.exe) para sincronizar los objetos de Active Directory con una instancia de ADAM en windows Server. Sin embargo, se registra un mensaje de error similar al siguiente en el archivo de registro de Adamsync:

Entrada de procesamiento: entrada de origen de procesamiento de la página X, marco X, entrada X, recuento X, procesamiento de USN X
<guid=f9023a23e3a06d408f07a0d51c301f38> Procesar entrada en el ámbito
f9023a23e3a06d408f07a0d51c301f38. Adición de un objeto de destino
CN= TestGroup,OU= Accounts,dc= domain, dc= com. Agregar atributos: sourceobjectguid, objectClass, instanceType, displayName, info, adminDescription, displayNamePrintable, userAccountControl, codePage, countryCode, logonHours, primaryGroupID, comment, accountExpires, sAMAccountName, desktopProfile, legacyExchangeDN, userPrincipalName

Error ldap. ldap_add_sW: Infracción de clase de objeto. Información extendida: 0000207D: UpdErr: DSID-0315119D, problema 6002 (OBJ_CLASS_VIOLATION), datos -2054643804

Causa

Este problema se produce debido a las diferencias de definición de clase entre Active Directory y ADAM. Esta diferencia aparece cuando se intenta modificar un objeto para incluir un atributo que no es válido para su clase. Por ejemplo, el atributo no está definido en el esquema ADAM en absoluto o el atributo está definido, pero el atributo no está presente en la lista de atributos Mandatory u Optional para la clase específica. Normalmente, la segunda situación es la causa más frecuente de este problema.

La definición de clase para el objeto que se va a sincronizar contiene uno o varios atributos en Active Directory que no están disponibles en ADAM. La sección "Agregar atributos" del mensaje de error que se menciona en la sección "Síntomas" muestra los atributos que intenta agregar. Estos atributos se definen en la lista de atributos Optional o Mandatory para la clase del objeto que se está sincronizando.

Por ejemplo, en el mensaje de error que se menciona en la sección "Síntomas", el objeto de referencia es CN=TestGroup. Al ver el objeto CN=TestGroup en Active Directory y comprobar la lista de atributos de esta clase y todas las clases primarias, verá que uno o varios atributos de esta lista no están en la lista de atributos Obligatorio u Opcional habilitados para esta clase en ADAM.

Nota:

Esto incluye listas de atributos de todas las clases primarias.

Solución

Para resolver este problema, siga estos pasos.

Determinación de los atributos y la clase del objeto

  1. Compruebe la lista de atributos que se agregan al objeto con errores. Puede determinar el objeto que produjo un error si ve el mensaje de error en el registro de sincronización. El objeto con error siempre es el último objeto que se indica al final del registro de sincronización exactamente antes del mensaje de error. Por ejemplo, el objeto CN=TestGroup ha producido un error en el mensaje de error que se menciona en la sección "Síntomas".
  2. Determine si los atributos DisplayNamePrintable, Flags o ExtensionName se incluyen en el mensaje de error. Si uno de estos atributos se incluye en el mensaje de error, consulte la sección "Pasos para resolver el problema cuando los atributos pertenecen a la clase TOP". Si no se incluye ningún atributo en el mensaje de error, consulte la sección "Pasos para resolver el problema cuando los atributos no pertenecen a la clase TOP".

Pasos para resolver el problema cuando los atributos pertenecen a la clase TOP

Verá que la clase TOP del esquema de Active Directory contiene el atributo DisplayNamePrintable, Flags o ExtensionName. Sin embargo, estos atributos no están incluidos en la clase TOP de ADAM. Sin embargo, no se puede cambiar la clase TOP en ADAM. Por lo tanto, use uno de los métodos siguientes para resolver el problema:

  • Excluya estos atributos mediante la <sección exclude> del archivo de configuración XML.
  • Mediante el esquema MMC, agregue manualmente estos atributos a la lista de atributos Opcionales para la clase correspondiente en el esquema ADAM. Por ejemplo, en el mensaje de error que se menciona en la sección "Síntomas", el objeto con errores es de la clase Group. Por lo tanto, debe agregar estos atributos a la lista Atributos opcionales para la clase Group en ADAM.

Pasos para resolver el problema cuando los atributos no pertenecen a la clase TOP

  1. En ADSchemaAnalyzer, en el menúOpciones de herramientas\, haga clic en Actualizar con referencias a elementos nuevos y presentes en la pestaña Generación de LDIF.

  2. Use el menú Archivo para cargar Active Directory como esquema de destino y ADAM como esquema base. Espere a que la herramienta termine de comparar los esquemas.

  3. En el menú Esquema , haga clic en Marcar todos los elementos como incluidos.

  4. En el menú Archivo , haga clic en Crear archivo LDIF para crear un archivo LDF que contenga los cambios.

    Nota:

    Si importa este archivo LDF directamente en ADAM, es probable que los atributos necesarios no se agreguen o modifiquen correctamente.

  5. No se muestra ningún mensaje de error. Consulte la sección "Por qué no puede importar el archivo LDF directamente en ADAM" para obtener una explicación de por qué ocurre esto. En este caso, vaya al paso 5 sin importar el archivo LDF.

  6. Examine el archivo LDF que creó en el paso 4. En concreto, vea la clase que está causando el problema. Por ejemplo, vea la clase Group. La sección de esta clase contendrá la lista de atributos que están presentes en la lista de atributos Obligatorio u Opcional para esta clase en Active Directory, pero que faltan en ADAM.

  7. Busque el atributo problem en el archivo LDF. Para ello, examine la sección "#attributes" del archivo LDF. Los atributos que no se importan permanecen en esta sección. Normalmente, el atributo problem es el único atributo que se encuentra en la sección "#attributes". Si encuentra el atributo de problema, vaya al paso 8. Si no encuentra el atributo de problema, vaya al paso 7.

  8. Si el atributo de problema no es obvio en la sección "#attributes" del archivo LDF, siga estos pasos para buscar el atributo de problema:

    1. Actualmente, todas las modificaciones en una clase se encuentran en una sección del archivo LDF. Esta es la sección "#Updating Elementos presentes". En esta sección, busque la sección que actualiza la clase que tiene el problema. Por ejemplo, si la clase Group es el problema, encontrará una sección similar a la siguiente:

      Elemento # Update: 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
      -

      Nota Algunas entradas más que se pueden encontrar aquí se han excluido de este ejemplo.

      Dn:
      changetype: modify
      add: schemaUpdateNow
      schemaUpdateNow: 1

    2. Cambie las entradas que se encuentran en el paso 4a dividiendo las entradas en un único atributo por operación. Por ejemplo, cambie las entradas del ejemplo del paso 7a mediante entradas similares a las siguientes:

      Elemento # Update: group
      dn: cn=Group,cn=Schema,cn=Configuration,dc=X
      changetype: modify
      add: mayContain
      # mayContain: adminCount
      mayContain: 1.2.840.113556.1.4.150
      -

      Elemento # Update: 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
      -

      Nota Algunas entradas más que se pueden encontrar aquí se han excluido de este ejemplo.

      Dn:
      changetype: modify
      add: schemaUpdateNow
      schemaUpdateNow: 1

  9. Guarde el archivo LDF.

  10. Importe el archivo LDF en el esquema ADAM mediante el comando que se proporciona al principio del archivo LDF.

  11. Vea el informe que muestra la utilidad Ldifde. Ldifde ahora notificará los errores que se producen con los atributos que no se importaron. La información de error será similar a la siguiente información de ejemplo:

    ldifde -i -u -f c:\data\problem\KBtest_modified.ldf -s localhost:50010 -j .-c "cn=Configuration,dc=X" #configurationNamingContext  
    Connecting to "localhost:50010"
    

    Inicio de sesión como usuario actual mediante SSPI
    Importación del directorio del archivo "c:\data\problem\KBtest_modified.ldf"
    Carga de entradas.
    Agregar error en la línea 15: Ya existe
    El error del lado servidor es: 0x2071 Se intentó agregar un objeto a
    ectory con un nombre que ya está en uso.
    El error de servidor extendido es:
    00002071: UpdErr: DSID-0305030D, problema 6005 (ENTRY_EXISTS), datos 0

    Nota:

    Busque el atributo de problema en el archivo LDF viendo el número de línea que se indica en el informe de errores.

  12. Use esta información de error para buscar el atributo del problema y resolverlo. Siga estos pasos para intentar resolver el problema:

    1. Busque el atributo de problema en el archivo LDF viendo el número de línea que se indica en el informe de errores. El atributo con errores puede tener un prefijo "DUP-" en DisplayName.
    2. Observe el identificador de objeto (OID) del atributo y busque este identificador de objeto en ADAM.
    3. Busque el atributo en ADAM que tiene el mismo identificador de objeto.
    4. Compare el atributo en ADAM y en el archivo LDF para encontrar cualquier diferencia. Por ejemplo, los atributos pueden tener un displayName diferente, pero el mismo identificador de objeto.
    5. Decida qué atributo conservar y, a continuación, corrija el otro. Por ejemplo, puede quitar la entrada del archivo LDF o puede corregir la entrada del atributo ADAM. O bien, puede excluir el atributo problem de la sincronización mediante la <sección exclude> del archivo de configuración XML.
  13. Después de corregir el atributo de problema en Active Directory o en el esquema ADAM o después de quitar el atributo del archivo LDF, vuelva a importar el archivo LDF modificado. Ahora la operación de importación debe realizarse correctamente. Si el problema no se resuelve, puede haber otro atributo que esté causando el problema. Repita los pasos del 10 al 12 hasta que se importen todos los atributos.

Registro de diagnóstico

Cuando encuentre el atributo problem, es posible que no sea obvio qué tiene de malo. Por ejemplo, es posible que no encuentre un identificador de objeto duplicado o un

otra entrada DisplayName. Cuando no se importa un atributo de problema, puede obtener más información sobre el error activando el registro de depuración para la interfaz LDAP. Para ello, siga estos pasos:

  1. Para obtener más información sobre el error de ldifde, active el registro LDAP en ADAM. Para ello, cambie el valor de la entrada del Registro de eventos de la interfaz LDAP de categoría 16 a 5. Esta entrada del Registro se encuentra en la siguiente subclave del Registro: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ADAM_instanceName\Diagnostics

  2. Vuelva a importar el archivo LDF.

  3. Busque errores en el registro de eventos.

  4. Después de finalizar la solución de problemas, restablezca el valor de la entrada del Registro de eventos de la interfaz LDAP de categoría 16 a 0. De lo contrario, el registro de eventos se inundará.

Póngase en contacto con Soporte técnico de Microsoft

Si el problema no se resuelve después de completar los pasos de este artículo, póngase en contacto con Soporte técnico de Microsoft.

Estado

Este comportamiento es una característica del diseño de la aplicación.

Más información

Para sincronizar datos de Active Directory con ADAM mediante la herramienta Adamsync, siga estos pasos:

  1. Haga clic en Inicio, seleccione Todos los programas, ADAMy, a continuación, haga clic en Símbolo del sistema de herramientas de ADAM.
  2. En el símbolo del sistema, escriba el comando siguiente y presione ENTRAR: adamsync /fs Server_Name: port_numberconfigurationName /log log_file_name.log

Por qué no puede importar el archivo LDF directamente en ADAM

Si importa el archivo LDF que creó en el paso 1 en la sección "Pasos para resolver el problema cuando los atributos no pertenecen a la clase TOP" en ADAM, estos atributos todavía no se agregan a la lista de atributos de ADAM. Puede comprobar este comportamiento mediante MMC o ADSIEDIT del esquema ADAM para examinar el esquema. Este comportamiento se produce porque la operación de importación de Ldifde produce un error silencioso. Actualmente, Ldifde no notifica errores. Se produce un error silenciosamente debido a la forma en que ADSchemaAnalyzer construye el archivo LDF. ADSchemaAnalyzer usa los comandos ntdsschemaadd y ntdsSchemamodify . Estos comandos activa el control LDAP permisivo. Esto significa que cualquier error es silencioso.

Además, para cada clase, todos los atributos que se van a agregar a la lista Atributos opcionales se agregan en una operación de adición o modificación. Por lo tanto, si hay un problema al agregar uno de los atributos, se produce un error en toda la operación y no se agregan atributos en la lista. Por lo tanto, se deben realizar pasos adicionales para buscar el atributo de problema.

Normalmente, el motivo probable del error es un identificador de objeto duplicado de un atributo o alguna otra diferencia en las definiciones de atributo en Active Directory y ADAM. Esto significa que se pueden perder OID duplicados y un atributo se puede ver como un nuevo atributo si LDapDisplayName no existe en ADAM.