Freigeben über


Erstellen einer Anwendungsverzeichnispartition

Eine Anwendungsverzeichnispartition wird durch ein domainDNS-Objekt mit dem instanceType-AttributwertDS_INSTANCETYPE_IS_NC_HEAD kombiniert mit DS_INSTANCETYPE_NC_IS_WRITEABLE dargestellt. Dieses domainDNS-Objekt stellt den Stamm der Anwendungsverzeichnispartition (NC Head) dar und hat den Namen einer regulären Domänenpartition, z. B. "DC=dynamicdata,DC=fabrikam,DC=com", was dem DNS-Namen "dynamicdata.fabrikam.com" entspricht. Eine Anwendungsverzeichnispartition kann daher überall instanziiert werden, wo eine Domänenpartition instanziiert werden kann. Einer Anwendungsverzeichnispartition ist kein NetBIOS-Name zugeordnet.

Es ist möglich, Anwendungsverzeichnispartitionen zu schachteln, d. h. eine Anwendungsverzeichnispartition kann untergeordnete Anwendungsverzeichnispartitionen aufweisen. Bei Suchvorgängen mit unterstrukturischem Bereich, der an einem Anwendungsverzeichnispartitionskopf verwurzelt ist, werden Fortsetzungsverweise auf die untergeordneten Anwendungsverzeichnispartitionen generiert.

Ein Anwendungsverzeichnispartitionsreplikat kann nur auf einem Domänencontroller erstellt werden, der unter Windows Server 2003 und höher ausgeführt wird, und nur, wenn die Domain-Naming FSMO-Rolle von einem Windows Server 2003-Domänencontroller oder höher verwaltet wird. In einer gemischten Gesamtstruktur, die sowohl Windows Server 2003-Domänencontroller als auch down-level-Domänencontroller (Windows 2000-Domänencontroller oder primäre Windows NT 4.0-Domänencontroller) enthält, schlägt der Versuch, ein Anwendungsverzeichnispartitionsreplikat auf einem heruntergefahrenen Domänencontroller zu erstellen, fehl.

Eine Anwendungsverzeichnispartition verfügt außerdem über ein entsprechendes crossRef-Objekt im Partitionscontainer der Konfigurationspartition. CrossRef kann vor dem Erstellen des domainDNS-Objekts manuell erstellt werden. Das vorab erstellte crossRef-Objekt muss über die in der folgenden Tabelle aufgeführten Attributwerte verfügen, andernfalls schlägt die Partitionserstellung fehl. Wenn das crossRef-Objekt nicht vorhanden ist, erstellt der Active Directory-Server beim Erstellen der Anwendungsverzeichnispartition ein Objekt.

attribute BESCHREIBUNG
dnsRoot Enthält den DNS-Pfad des Domänencontrollers, auf dem die Anwendungsverzeichnispartition erstellt wird.
Aktiviert Enthält FALSE.
Ncname Enthält den distinguished Name der Partition. Im obigen Beispiel würde dieses Attribut "DC=dynamicdata,DC=mydomain,DC=com" enthalten.

 

Führen Sie die folgenden Schritte aus, um eine neue Anwendungsverzeichnispartition mit dem ersten Replikat zu erstellen.

  1. Binden Sie an den Namespace für die neue Partition, und geben Sie den Domänencontroller an, der die Anwendungsverzeichnispartition im ADsPath hosten soll. Wenn Sie z. B. eine Partition mit einem ADsPath von "DC=dynamicdata,DC=mydomain,DC=com" erstellen möchten, lautet die Bindung ADsPath "LDAP://< Domain controller>/DC=mydomain,DC=com", wobei "<Domänencontroller>" der DNS-Name des Domänencontrollers ist, der die Partition hosten wird.

    Der Bindungsvorgang muss die Optionen "Schnell" und "Delegierung" angeben. Mit der Option fast kann die Bindung auch dann erfolgreich ausgeführt werden, wenn der Namespace nicht vorhanden ist. Die Delegierungsoption ist erforderlich, damit der Domänencontroller den Domain-Naming FSMO-Rolleninhaber mit den gleichen Anmeldeinformationen kontaktieren kann.

    Die Systemversion des Domänencontrollers muss Windows Server 2003-Betriebssystem und höher sein.

  2. Erstellen Sie ein domainDNS-Objekt mit einem geeigneten Namen für die Partition, z. B. "DC=dynamicdata", um den Namenskontextkopf für die neue Partition darzustellen. Das domainDNS-Objekt muss über ein instanceType-Attribut mit dem Wert 5 (DS_INSTANCETYPE_IS_NC_HEAD | DS_INSTANCETYPE_NC_IS_WRITEABLE) verfügen. Das instanceType-Attribut kann nur zum Zeitpunkt der Erstellung festgelegt werden, da es sich um ein reines Systemattribute handelt.

Wenn das domainDNS-Objekt erstellt wird, führt der Active Directory-Server die folgenden Schritte aus:

  1. Sucht im Partitionscontainer nach einem crossRef-Objekt , das über einen nCName-Attributwert verfügt, der mit dem distinguished Name der Partition übereinstimmt, und ändert das crossRef-Objekt , wenn eine Übereinstimmung gefunden wird, so dass es die Anwendungsverzeichnispartition darstellt. Wenn kein übereinstimmende crossRef-Objekt gefunden wird, erstellt der Active Directory-Server ein neues crossRef-Objekt zur Darstellung der Anwendungsverzeichnispartition.

    In der folgenden Tabelle sind wichtige Attribute des crossRef-Objekts aufgeführt.

    attribute BESCHREIBUNG
    Ncname Enthält den distinguished Name der Partition.
    dnsRoot Enthält den DNS-Namen der Partition.
    msDS-NC-Replica-Locations Der distinguished Name des nTDSDSA-Objekts des Domänencontrollers für das erste Replikat wird diesem Attribut hinzugefügt.

     

  2. Initiieren Sie eine Synchronisierung der Konfigurationspartition, und warten Sie auf den Abschluss. Dadurch kann die Clientanwendung Konfigurationsparameter für die neu erstellte Anwendungsverzeichnispartition ändern, während sie an denselben Domänencontroller gebunden ist, der zum Erstellen der Anwendungsverzeichnispartition verwendet wurde.

  3. Erstellen Sie das domainDNS-Objekt mit den flags DS_INSTANCETYPE_IS_NC_HEAD und DS_INSTANCETYPE_NC_IS_WRITEABLE , die für die instanceType-Eigenschaft festgelegt sind. Die instanceType-Eigenschaft kann auch andere private Flags enthalten.

  4. Füllen Sie das Attribut ms-DS-Has-Master-NCs des nTDSDSA-Objekts für den Zieldomänencontroller mit dem distinguished Name der neu erstellten Anwendungsverzeichnispartition auf.

Wenn die Anwendungsverzeichnispartition erstellt wird oder ein neues Replikat der Anwendungsverzeichnispartition hinzugefügt und vollständig synchronisiert wird, registriert der Active Directory-Server das Replikat ordnungsgemäß bei NetLogon und DNS. Weitere Informationen und eine Liste der registrierten SRV-Einträge finden Sie unter Suchen eines Anwendungsverzeichnispartitionshostservers.

Weitere Informationen zum Erstellen einer Anwendungsverzeichnispartition finden Sie unter Beispielcode für das Erstellen einer Anwendungsverzeichnispartition.

Suchen des Partitionscontainers

Der distinguished Name des Partitionscontainers kann auf eine von zwei Arten gefunden werden. Die erste ist komplizierter, liefert aber immer ein genaues Ergebnis:

  1. Binden Sie an RootDSE, und rufen Sie das configurationNamingContext-Attribut ab.
  2. Verwenden Sie das configurationNamingContext-Attribut , um eine Bindung an den Konfigurationscontainer zu erstellen.
  3. Suchen Sie im Konfigurationscontainer nach einem Objekt vom Typ crossRefContainer .
  4. Rufen Sie den DistinguishedName-Attributwert des crossRefContainer-Objekts ab. Dies ist der distinguished Name des Containers Partitionen.

Weitere Informationen und ein Codebeispiel, das diese Methode zum Suchen des Partitionscontainers zeigt, finden Sie in der Funktion GetPartitionsDNSearch in Example Code for Locating the Partitions Container.For more information and a code that shows this method for locating the Partitions container, see the GetPartitionsDNSearch function in Example Code for Locating the Partitions Container.

Die zweite Methode ist einfacher zu implementieren, basiert jedoch auf dem Partitionscontainer mit einem bestimmten relativen distinguished-Namen. Es ist derzeit nicht möglich, den Namen des Partitionscontainers zu ändern. Wenn diese Funktion jedoch in Zukunft hinzugefügt wird, funktioniert das folgende Verfahren nicht ordnungsgemäß, wenn der Partitionscontainer umbenannt wurde.

  1. Binden Sie an RootDSE, und rufen Sie das configurationNamingContext-Attribut ab.
  2. Kombinieren Sie die Zeichenfolge "CN=Partitions", gefolgt von dem configurationNamingContext-Attribut , um den distinguished Name des Partitions-Containers zu bilden. Der distinguished Name hat das Format "CN=Partitions,Configuration< DN>".

Weitere Informationen und ein Codebeispiel, das diese Methode zum Suchen des Partitionscontainers zeigt, finden Sie unter der Funktion GetPartitionsDNManual in Example Code for Locating the Partitions Container.For more information and a code that shows this method for locating the Partitions container, see the GetPartitionsDNManual function in Example Code for Locating the Partitions Container.