创建应用程序目录分区

应用程序目录分区由 domainDNS 对象表示,其 instanceType 属性值为DS_INSTANCETYPE_IS_NC_HEADDS_INSTANCETYPE_NC_IS_WRITEABLE结合使用。 此 domainDNS 对象表示应用程序目录分区根(NC 头),其名称类似于常规域分区,例如“DC=dynamicdata,DC=fabrikam,DC=com”,对应于 DNS 名称“dynamicdata.fabrikam.com”。 因此,可以在实例化域分区的任何位置实例化应用程序目录分区。 没有与应用程序目录分区关联的 NetBIOS 名称。

可以嵌套应用程序目录分区,即应用程序目录分区可以具有子应用程序目录分区。 使用根植于应用程序目录分区头的子树范围进行搜索将生成对子应用程序目录分区的延续引用。

应用程序目录分区副本 (replica)只能在 Windows Server 2003 及更高版本上运行的域控制器上创建,而域命名 FSMO 角色由 Windows Server 2003 及更高版本的域控制器持有。 在同时具有 Windows Server 2003 域控制器和下层域控制器(Windows 2000 域控制器或 Windows NT 4.0 主域控制器)的混合林中,尝试在下层域控制器上创建应用程序目录分区副本 (replica)将失败。

应用程序目录分区在配置分区的 Partitions 容器中也具有相应的 crossRef 对象。 可以在创建 domainDNS 对象之前手动创建 crossRef。 预先创建的 crossRef 对象必须具有下表中显示的属性值,否则分区创建将失败。 如果 crossRef 对象不存在,则创建应用程序目录分区时,Active Directory 服务器将创建一个。

Attribute 说明
dnsRoot 包含将在其中创建应用程序目录分区的域控制器的 DNS 路径。
Enabled 包含 FAL标准版
nCName 包含分区的可分辨名称。 在上面的示例中,此属性将包含“DC=dynamicdata,DC=mydomain,DC=com”。

 

若要使用第一个副本 (replica)创建新的应用程序目录分区,请执行以下步骤

  1. 绑定到新分区的命名空间,指定将在 ADsPath 中托管应用程序目录分区的域控制器。 例如,若要创建 ADsPath 为“DC=dynamicdata,DC=mydomain,DC=com”的分区,绑定 ADsPath 将为“LDAP://< domain controller>/DC=mydomain,DC=com”,其中“域控制器>”<是将托管分区的域控制器的 DNS 名称。

    绑定操作必须指定快速和委派选项。 快速选项允许绑定成功,即使命名空间不存在也是如此。 委派选项是允许域控制器使用相同凭据联系域命名 FSMO 角色持有者所必需的。

    域控制器的系统版本必须是 Windows Server 2003 操作系统及更高版本。

  2. 创建具有相应分区名称的 domainDNS 对象,例如“DC=dynamicdata”,表示新分区的命名上下文头。 domainDNS 对象必须具有值为 5 的 instanceType 属性(DS_INSTANCETYPE_IS_NC_HEAD DS_INSTANCETYPE_NC_IS_WRITEABLE | )。 只能在创建时设置 instanceType 属性,因为它是仅系统属性。

创建 domainDNS 对象后,Active Directory 服务器将执行以下步骤:

  1. 在 Partitions 容器中搜索与分区的可分辨名称匹配的 nCName 属性值的 crossRef 对象,如果找到匹配项,则修改 crossRef 对象来表示应用程序目录分区。 如果未找到匹配 的 crossRef 对象,Active Directory 服务器将创建一个新的 crossRef 对象来表示应用程序目录分区。

    下表列出了 crossRef 对象的重要属性

    Attribute 说明
    nCName 包含分区的可分辨名称。
    dnsRoot 包含分区的 DNS 名称。
    msDS-NC-Replica-Locations 第一个副本 (replica)域控制器的 nTDSDSA 对象的可分辨名称将添加到此属性。

     

  2. 启动配置分区的同步并等待完成。 这使客户端应用程序能够修改新创建的应用程序目录分区的配置参数,同时绑定到用于创建应用程序目录分区的同一域控制器。

  3. 使用 instanceType 属性上设置的DS_INSTANCETYPE_IS_NC_HEADDS_INSTANCETYPE_NC_IS_WRITEABLE标志创建 domainDNS 对象 instanceType 属性还可以包含其他专用标志。

  4. 使用新创建的应用程序目录分区的可分辨名称填充目标域控制器的 nTDSDSA 对象的 ms-DS-Has-Master-NCs 属性

创建应用程序目录分区或添加和完全同步应用程序目录分区的新副本 (replica)时,Active Directory 服务器会将副本 (replica)正确注册到 NetLogon 和 DNS。 有关详细信息,以及已注册的 SRV 记录的列表,请参阅 查找应用程序目录分区主机服务器

有关创建应用程序目录分区的详细信息,请参阅 用于创建应用程序目录分区的示例代码。

查找分区容器

可通过以下两种方式之一找到分区容器的可分辨名称。 第一个是更复杂的执行,但始终提供准确的结果:

  1. 绑定到 RootD标准版并获取 configurationNamingContext 属性。
  2. 使用 configurationNamingContext 属性绑定到配置容器。
  3. 在配置容器中搜索 crossRefContainer 类型的对象
  4. 获取 crossRefContainer 对象的 distinguishedName 属性值。 这是分区容器的可分辨名称。

有关详细信息和显示用于查找分区容器的方法的代码示例,请参阅用于查找分区容器的示例代码中的 GetPartitionsDNSearch 函数。

第二种方法更易于实现,但依赖于具有特定相对可分辨名称的分区容器。 目前无法更改分区容器的名称,但如果将来添加此功能,则如果分区容器已重命名,下面的过程将无法正常工作。

  1. 绑定到 RootD标准版并获取 configurationNamingContext 属性。
  2. 合并字符串“CN=Partitions”,后跟 configurationNamingContext 属性,形成分区容器的可分辨名称。 可分辨名称的格式为“CN=Partitions,configuration< DN>”。

有关详细信息和显示用于定位分区容器的方法的代码示例,请参阅用于查找分区容器的示例代码中的 GetPartitionsDNManual 函数。