Compartir a través de


Deshabilitación de clases y atributos existentes

Las adiciones de esquema son permanentes. No se pueden eliminar los objetos attributeSchema y classSchema . En un sistema distribuido, es difícil garantizar que no haya instancias de una clase o atributo determinado. Al quitar la definición de una clase o atributo, se dañan las instancias existentes de esa clase o atributo.

Puede deshabilitar una clase o atributo existente marcandola como "inactiva". Esto no afecta a las instancias existentes de la clase o atributo tan marcadas, pero impide la creación de nuevas instancias.

Las restricciones siguientes se aplican al deshabilitar las clases de esquema y los atributos:

  • No se puede deshabilitar una clase o atributo de categoría 1.
  • No se puede deshabilitar un atributo que sea miembro de una clase que no esté también deshabilitada. Esto se debe a que es posible que se requiera un atributo para la clase (no deshabilitada) y deshabilitar el atributo impide que se creen nuevas instancias de la clase.

Para deshabilitar un atributo, establezca el atributo isDefunct de su objeto attributeSchema en TRUE. Cuando se deshabilita un atributo, no se pueden crear nuevas instancias del atributo. Para volver a habilitar el atributo , establezca el atributo isDefunct enFALSE.

Para deshabilitar una clase, establezca el atributo isDefunct de su objeto classSchema en TRUE. Cuando se deshabilita una clase, no se pueden crear nuevas instancias de la clase. Para volver a habilitar la clase, establezca el atributo isDefunct enFALSE.

Establecer objetos de esquema como inactivos puede ser útil en entornos de producción. Cuando ya no se requiere una versión de prueba de una extensión de esquema, óbela como inactiva. Puede restaurarlo quitando el atributo isDefunct o estableciendo el valor del atributo en FALSE. Esto también protege contra una eliminación no deseada de un objeto de esquema estableciendo en desuso porque la operación se puede invertir fácilmente.

Tenga en cuenta que el servidor de Active Directory no limpia las instancias existentes de un atributo o clase cuando se desusa un objeto de esquema. Si quita la propiedad isDefunct , las instancias se vuelven válidas y normales de nuevo.

En la lista siguiente se incluyen otras consecuencias de marcar un objeto attributeSchema o classSchema inactivo:

  • Se produce un error en la adición o modificación de una instancia.
  • Los códigos de error se comportan como si nunca existiera una clase inactiva.
  • La búsqueda y eliminación se comportan como si no se hubieran inactivo objetos de esquema.
  • Permitir solo eliminar todo el atributo del objeto.

En la lista siguiente se incluyen opciones adicionales en un entorno de producción para reducir el impacto de las extensiones de esquema inactivas:

  • Quite todos los valores de atributo mayHave de una clase inactiva.
  • Reduzca el tamaño de todos los valores de atributo mustHave de una clase inactiva.
  • Quite un atributo inactivo del catálogo global.
  • Quite un atributo inactivo de cualquier índice.

Otras opciones para quitar los cambios de esquema no deseados en un entorno de producción son para que los desarrolladores usen un controlador de dominio privado para las pruebas. En este caso, puede hacer lo siguiente:

  • "Restablecer" el servidor de Active Directory mediante Dcpromo.exe para degradar el controlador de dominio. Una vez completado el degradado, vuelva a usar Dcpromo.exe para volver a promover el servidor a un controlador de dominio. A continuación, el desarrollador puede usar scripts LDIF para volver a cargar las clases, atributos y instancias de objeto necesarias.
  • Use Ntbackup.exe para realizar una copia de seguridad de estado del sistema en una partición de disco disponible. Reinicie el modo de restauración del servicio seguro o de directorio para restaurar.

En el caso de los sistemas operativos Windows Server 2003, cuando se establece una clase o atributo en inactivo, puede reutilizar inmediatamente los valores ldapDisplayName, schemaIdGuid, OID y mapiID del elemento de esquema inactivo al crear una nueva clase o atributo para reemplazarlo. La versión inactiva de la clase o atributo se mantiene en el contenedor Schema, pero está oculta en el complemento MMC. Para reactivar el elemento de esquema antiguo, establezca isDefunct enFALSE.

En el siguiente ejemplo de código LDIF se muestra cómo modificar el atributo isDefunct y cambiar el RDN para que no se confunda con la nueva clase que cree para reemplazarla.

 dn: CN=MyClass,CN=Schema,CN=Configuration,DC=X
   changetype: modify
   replace: isDefunct
   isDefunct: TRUE
   -

   dn: CN=MyClass,CN=Schema,CN=Configuration,DC=X
   changetype: modrdn
   newrdn: cn=MyClassOld
   deleteoldrdn: 1

   dn:
   changetype: modify
   add: schemaUpdateNow
   schemaUpdateNow: 1
   -

Use el siguiente comando para ejecutar el ejemplo de código LDIF en un bosque de un equipo que se ejecuta en sistemas operativos Windows Server 2003.

ldifde /i /f rdn.ldf /c "DC=X" "dc=mydomain,dc=com"

(Donde "DC=X" es una constante)