Отключение существующих классов и атрибутов

Дополнения схемы являются постоянными. Невозможно удалить объекты attributeSchema и classSchema. В распределенной системе трудно гарантировать отсутствие экземпляров заданного класса или атрибута. Удаление определения класса или атрибута повреждает существующие экземпляры этого класса или атрибута.

Вы можете отключить существующий класс или атрибут, пометив его как "нефункционный". Это не влияет на существующие экземпляры класса или атрибута, помеченного таким образом, но предотвращает создание новых экземпляров.

Следующие ограничения применяются при отключении классов и атрибутов схемы:

  • Нельзя отключить класс или атрибут категории 1.
  • Нельзя отключить атрибут, который является членом класса, который также не отключен. Это связано с тем, что атрибут может потребоваться для класса (не отключен) и отключение атрибута предотвращает создание новых экземпляров класса.

Чтобы отключить атрибут, задайте для атрибута isDefunct объект attributeSchema значение TRUE. Если атрибут отключен, новые экземпляры атрибута не могут быть созданы. Чтобы повторно включить атрибут, установите для атрибута isDefunct значение FALSE.

Чтобы отключить класс, задайте атрибут isDefunct объекта classSchema значение TRUE. При отключении класса невозможно создать новые экземпляры класса. Чтобы повторно включить класс, задайте для атрибута isDefunct значение FALSE.

Установка объектов схемы в качестве нефункционирования может быть полезной в рабочих средах. Если тестовая версия расширения схемы больше не требуется, пометьте ее как отклоненную. Его можно восстановить, удалив атрибут isDefunct или задав значение false. Это также защищает от непреднамеренного удаления объекта схемы, задав его неисменяемым, так как операция может быть легко отменена.

Помните, что сервер Active Directory не очищает существующие экземпляры атрибута или класса при удалении объекта схемы. При удалении свойства isDefunct все экземпляры становятся допустимыми, обычные объекты снова.

В следующем списке содержатся другие последствия маркировки объекта attributeSchema или classSchema не удается:

  • Сбой добавления или изменения экземпляра.
  • Коды ошибок ведут себя так, как если бы класс не существовал.
  • Поиск и удаление ведут себя так, как если бы объекты схемы не были отклонены.
  • Разрешить удаление всего атрибута из объекта.

В следующем списке содержатся дополнительные параметры в рабочей среде для снижения влияния расширений схемы, не входящие в систему.

  • Удалите все значения атрибутов mayHave из нефункционного класса.
  • Уменьшите размер всех значений атрибутов mustHave из нефункционного класса.
  • Удалите атрибут нефункциона из глобального каталога.
  • Удалите атрибут нефункционирования из любого индекса.

Другие варианты удаления нежелательных изменений схемы в рабочей среде предназначены для разработчиков использовать частный контроллер домена для тестирования. В этом случае можно:

  • "Сброс" сервера Active Directory с помощью Dcpromo.exe для понижения контроллера домена. После завершения понижения используйте Dcpromo.exe еще раз, чтобы вернуть сервер к контроллеру домена. Затем разработчик может использовать скрипты LDIF для перезагрузки всех необходимых классов, атрибутов и экземпляров объектов.
  • Используйте Ntbackup.exe для выполнения резервного копирования состояния системы в доступную секцию диска. Перезагрузите для восстановления режим восстановления Сейф или службы каталогов.

Для операционных систем Windows Server 2003 при установке класса или атрибута для неисключения можно немедленно повторно использовать значения ldapDisplayName, schemaIdGuid, OID и mapiID элемента схемы при создании нового класса или атрибута для его замены. Нефункционная версия класса или атрибута сохраняется в контейнере схемы, но она скрыта в оснастке MMC. Чтобы повторно активировать старый элемент схемы, задайте значение false.

В следующем примере кода LDIF показано, как изменить атрибут isDefunct и изменить RDN, чтобы он не путался с новым классом, создаваемым для его замены.

 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
   -

Используйте следующую команду, чтобы запустить пример кода LDIF для леса для компьютера, работающего в операционных системах Windows Server 2003.

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

(Где "DC=X" является константой)