Disabilitazione di classi e attributi esistenti
Le aggiunte dello schema sono permanenti. Non è possibile eliminare gli oggetti attributeSchema e classSchema . In un sistema distribuito, è difficile garantire che non ci siano istanze di una determinata classe o attributo. La rimozione della definizione di una classe o di un attributo danneggia le istanze esistenti di tale classe o attributo.
È possibile disabilitare una classe o un attributo esistente contrassegnandolo come "inattivo". Ciò non influisce sulle istanze esistenti della classe o dell'attributo contrassegnate, ma impedisce la creazione di nuove istanze.
Quando si disabilitano classi e attributi dello schema, si applicano le restrizioni seguenti:
- Non è possibile disabilitare una classe o un attributo category 1.
- Non è possibile disabilitare un attributo membro di una classe non disabilitata. Ciò è dovuto al fatto che un attributo potrebbe essere necessario per la classe (non disabilitata) e la disabilitazione dell'attributo impedisce la creazione di nuove istanze della classe.
Per disabilitare un attributo, impostare l'attributo isDefunct del relativo oggetto attributeSchema su TRUE. Quando un attributo è disabilitato, non è possibile creare nuove istanze dell'attributo. Per riabilitare l'attributo impostare l'attributo isDefunct su FAL edizione Standard.
Per disabilitare una classe, impostare l'attributo isDefunct del relativo oggetto classSchema su TRUE. Quando una classe è disabilitata, non è possibile creare nuove istanze della classe. Per riabilitare la classe impostare l'attributo isDefunct su FAL edizione Standard.
L'impostazione di oggetti schema come inattivi può essere utile negli ambienti di produzione. Quando non è più necessaria una versione di test di un'estensione dello schema, contrassegnarla come inattiva. È possibile ripristinarlo rimuovendo l'attributo isDefunct o impostando il valore dell'attributo su FAL edizione Standard. Ciò protegge anche da una rimozione imprevista di un oggetto schema impostandolo su inattivo perché l'operazione può essere facilmente invertita.
Tenere presente che il server Active Directory non pulisce le istanze esistenti di un attributo o di una classe quando si rende inattivo un oggetto schema. Se si rimuove la proprietà isDefunct , tutte le istanze diventano valide, gli oggetti normali diventano di nuovo validi.
L'elenco seguente include altre conseguenze del contrassegno di un oggetto attributeSchema o classSchema inattivo:
- L'aggiunta o la modifica di un'istanza non riesce.
- I codici di errore si comportano come se non esistesse mai una classe inattiva.
- La ricerca e l'eliminazione si comportano come se non siano stati resi inattivi gli oggetti dello schema.
- Consenti solo l'eliminazione dell'intero attributo dall'oggetto .
L'elenco seguente include opzioni aggiuntive in un ambiente di produzione per ridurre l'impatto delle estensioni dello schema inattivi:
- Rimuovere tutti i valori di attributo mayHave da una classe inattiva.
- Ridurre le dimensioni di tutti i valori di attributo mustHave da una classe inattiva.
- Rimuovere un attributo inattivo dal catalogo globale.
- Rimuovere un attributo inattivo da qualsiasi indice.
Altre opzioni per rimuovere le modifiche dello schema indesiderate in un ambiente di produzione sono destinate agli sviluppatori a usare un controller di dominio privato per i test. In questo caso, è possibile:
- "Reimpostare" il server Active Directory usando Dcpromo.exe per abbassare di livello il controller di dominio. Al termine dell'abbassamento di livello, usare di nuovo Dcpromo.exe per alzare di livello il server a un controller di dominio. Lo sviluppatore può quindi usare gli script LDIF per ricaricare le classi, gli attributi e le istanze di oggetti necessarie.
- Usare Ntbackup.exe per eseguire un backup dello stato del sistema in una partizione disco disponibile. Riavviare per Cassaforte/modalità ripristino del servizio directory da ripristinare.
Per i sistemi operativi Windows Server 2003, quando si imposta una classe o un attributo inattivo, è possibile riutilizzare immediatamente i valori ldapDisplayName, schemaIdGuid, OID e mapiID dell'elemento dello schema inattivo quando si crea una nuova classe o attributo per sostituirlo. La versione inattiva della classe o dell'attributo viene mantenuta nel contenitore Schema, ma è nascosta nello snap-in MMC. Per riattivare l'elemento schema precedente, impostare isDefunct su FAL edizione Standard.
Nell'esempio di codice LDIF seguente viene illustrato come modificare l'attributo isDefunct e modificare la rete RDN in modo che non sia confusa con la nuova classe creata per sostituirla.
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
-
Usare il comando seguente per eseguire l'esempio di codice LDIF su una foresta per un computer in esecuzione nei sistemi operativi Windows Server 2003.
ldifde /i /f rdn.ldf /c "DC=X" "dc=mydomain,dc=com"
(Dove "DC=X" è una costante)