Compartilhar via


Desabilitando classes e atributos existentes

As adições de esquema são permanentes. Não é possível excluir objetos attributeSchema e classSchema. Em um sistema distribuído, é difícil garantir que não haja instâncias de uma determinada classe ou atributo. A remoção da definição de uma classe ou atributo danifica instâncias existentes dessa classe ou atributo.

Você pode desabilitar uma classe ou atributo existente marcando-o como "extinto". Isso não afeta instâncias existentes da classe ou atributo assim marcado, mas impede a criação de novas instâncias.

As seguintes restrições se aplicam ao desabilitar classes e atributos de esquema:

  • Não é possível desabilitar uma classe ou atributo de Categoria 1.
  • Não é possível desabilitar um atributo que seja membro de uma classe que também não esteja desabilitada. Isso ocorre porque um atributo pode ser necessário para a classe (não desabilitada) e desabilitar o atributo impede que novas instâncias da classe sejam criadas.

Para desabilitar um atributo, defina o atributo isDefunct de seu objeto attributeSchema como TRUE. Quando um atributo é desabilitado, novas instâncias do atributo não podem ser criadas. Para reativar o atributo, defina o atributo isDefunct como FALSE.

Para desabilitar uma classe, defina o atributo isDefunct de seu objeto classSchema como TRUE. Quando uma classe é desabilitada, novas instâncias da classe não podem ser criadas. Para reativar a classe, defina o atributo isDefunct como FALSE.

Definir objetos de esquema como extintos pode ser útil em ambientes de produção. Quando uma versão de teste de uma extensão de esquema não for mais necessária, marque-a como extinta. Você pode restaurá-lo removendo o atributo isDefunct ou definindo o valor do atributo como FALSE. Isso também protege contra uma remoção não intencional de um objeto de esquema, definindo-o como extinto porque a operação pode ser facilmente revertida.

Lembre-se de que o servidor do Active Directory não limpa instâncias existentes de um atributo ou classe quando você extingue um objeto de esquema. Se você remover a propriedade isDefunct , todas as instâncias se tornarão válidas, objetos normais novamente.

A lista a seguir inclui outras consequências de marcar um objeto attributeSchema ou classSchema extinto:

  • A adição ou modificação de uma instância falha.
  • Os códigos de erro se comportam como se uma classe extinta nunca tivesse existido.
  • Pesquisar e excluir comportam-se como se nenhum objeto de esquema tivesse sido extinto.
  • Permitir somente a exclusão de atributo inteiro do objeto.

A lista a seguir inclui opções adicionais em um ambiente de produção para reduzir o impacto de extensões de esquema extintas:

  • Remova todos os valores de atributo mayHave de uma classe extinta.
  • Reduza o tamanho de todos os valores de atributo mustHave de uma classe extinta.
  • Remova um atributo extinto do catálogo global.
  • Remova um atributo extinto de qualquer índice.

Outras opções para remover alterações de esquema indesejadas em um ambiente de produção são para os desenvolvedores usarem um controlador de domínio privado para teste. Nesse caso, você pode:

  • "Redefinir" o servidor do Active Directory usando Dcpromo.exe para rebaixar o DC. Após a conclusão do rebaixamento, use Dcpromo.exe novamente para promover o servidor de volta a um DC. O desenvolvedor pode usar scripts LDIF para recarregar todas as classes, atributos e instâncias de objeto necessários.
  • Use Ntbackup.exe para executar um backup de estado do sistema para uma partição de disco disponível. Reinicialize no modo de restauração do Serviço Seguro/Diretório para restaurar.

Para sistemas operacionais Windows Server 2003, ao definir uma classe ou atributo como extinto, você pode reutilizar imediatamente os valores ldapDisplayName, schemaIdGuid, OID e mapiID do elemento de esquema extinto ao criar uma nova classe ou atributo para substituí-lo. A versão extinta da classe ou atributo é mantida no contêiner Esquema, mas fica oculta no snap-in do MMC. Para reativar o elemento de esquema antigo, defina isDefunct como FALSE.

O exemplo de código LDIF a seguir mostra como modificar o atributo isDefunct e alterar o RDN para que ele não seja confundido com a nova classe que você cria para substituí-lo.

 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 o comando a seguir para executar o exemplo de código LDIF em uma floresta para um computador em execução em sistemas operacionais Windows Server 2003.

ldifde /i /f rdn.ldf /c "DC=X" "dc=meudomínio,dc=com"

(Onde "DC=X" é uma constante)