Empfehlungen für Schemaerweiterungsanwendungen

Zusätzlich zu den Voraussetzungen werden die folgenden bewährten Methoden für Schemaerweiterungsanwendungen empfohlen:

  • Suchen Sie den Schemamaster. Binden Sie an das Schema auf dem Domänencontroller, der der Schemamaster ist. Vermeiden Sie unnötige Änderungen der Schemamasterrolle zwischen DCs. So binden Sie an den Schemacontainer auf dem Schemamaster. Weitere Informationen finden Sie unter Voraussetzungen für die Installation einer Schemaerweiterung.

  • Überprüfen Sie vor dem Ausführen einer Aktion die allowedChildClassesEffective-Eigenschaft des Schemacontainers, um sicherzustellen, dass Sie Attribute und/oder Klassen erstellen können. Wenn attributeSchema und classSchema keine Werte in dieser Eigenschaft sind, verfügen Sie nicht über ausreichende Rechte zum Hinzufügen von Attributen oder Klassen zum Schema. Weitere Informationen finden Sie unter Beispielcode für die Überprüfung auf Rechte zum Erstellen von Schemaobjekten.

  • Stellen Sie sicher, dass die Zulässige Schemaaktualisierung in der Registrierung des Schemamasters entsprechend festgelegt ist. Um diesen Wert zu erstellen oder festzulegen, stellen Sie ihn im Rahmen der Bereinigungsroutine Ihrer Anwendung in den ursprünglichen Zustand zurück. Weitere Informationen zum Überprüfen und Festlegen dieses Werts finden Sie unter Enabling Schema Changes at the Schema Master.

  • Stellen Sie vor dem Hinzufügen von Attributen oder Klassen sicher, dass sie noch nicht vorhanden sind. Wenn sie vorhanden sind, stellen Sie sicher, dass es sich um die gleichen Attribute oder Klassen handelt, die Sie hinzufügen, und nicht um ein Attribut oder eine Klasse, die von einer Person mit unterschiedlicher Syntax und Eigenschaften erstellt wurde, die mit Ihren Attributen oder Klassen nicht kompatibel sind.

    Fragen Sie für Attribute cn, attributeID, governsID, lDAPDisplayName und schemaIDGUID ab, um sicherzustellen, dass sie nicht bereits verwendet werden. Wenn Sie eine Reihe von verknüpften Attributen hinzufügen (eine Weiterleitungslink, eine Zurück-Verknüpfung), stellen Sie sicher, dass die linkID-Attribute nicht bereits verwendet werden. Abfrage für governsID, da der Objektbezeichner (OID) für Attribute und Klassen eindeutig sein muss.

    Fragen Sie für Klassen nach cn, governsID, attributeID, lDAPDisplayName und schemaIDGUID ab, um sicherzustellen, dass sie nicht bereits verwendet werden. Fragen Sie attributeID ab, da die OID zwischen Klassen und Attributen eindeutig sein muss.

    Weitere Informationen zur Überprüfung auf Namenskonflikte finden Sie unter Beispielcode zum Erkennen von Schemabenennungskonflikten.

    Wenn Attribute oder Klassen vorhanden sind, die mit ihren neuen Attributen oder Klassen in Konflikt stehen, sollte Ihre Anwendung ihre Schemaänderungen nicht anwenden.

  • Wenn ein solcher Konflikt vorhanden ist, sollte Ihre Anwendung Ihre Schemaänderungen nicht anwenden. Möglicherweise muss der Schemaadministrator den Konflikt beheben und die Anwendung dann erneut ausführen. Alternativ kann ein anderer lDAPDisplayName verwendet werden. Allerdings müssen alle Anwendungen, die das Attribut oder Objekt verwenden, diese Änderung berücksichtigen. Um OID-Konflikte zu vermeiden, rufen Sie eine OID von einer ISO-Namensregistrierungsstelle ab.

  • Wenn Ihre Anwendung von Attributen oder Klassen abhängig ist, die sie hinzugefügt hat, aktualisieren Sie den Schemacache, bevor Sie die neuen Attribute oder Klassen hinzufügen, die von diesen Attributen oder Klassen abhängig sind. Beachten Sie, dass das schemaUpdateNow-Betriebsattribut synchron ist. Das heißt, der Aufruf der IADs::P ut-Methode wird blockiert, bis der Schemacache aktualisiert wird. Wenn der Aufruf zurückgegeben wird, wurde der Schemacache aktualisiert, und auf die neuen Attribute und/oder Klassen kann zugegriffen werden.

    Weitere Informationen zum Aktualisieren des Schemacaches finden Sie unter Beispielcode zum Aktualisieren des Schemacaches.