Criar uma partição de diretório de aplicativo
Uma partição de diretório de aplicativos é representada por um objeto domainDNS com um valor de atributo instanceType de DS_INSTANCETYPE_IS_NC_HEAD combinado com DS_INSTANCETYPE_NC_IS_WRITEABLE. Esse objeto domainDNS representa a raiz da partição do diretório de aplicativos (NC head) e é nomeado de forma semelhante a uma partição de domínio regular, por exemplo, "DC=dynamicdata,DC=fabrikam,DC=com", que corresponde a um nome DNS de "dynamicdata.fabrikam.com". Uma partição de diretório de aplicativos pode, portanto, ser instanciada em qualquer lugar onde uma partição de domínio possa ser instanciada. Não há nenhum nome NetBIOS associado a uma partição de diretório de aplicativos.
É possível aninhar partições de diretório de aplicativos, ou seja, uma partição de diretório de aplicativos pode ter partições de diretório de aplicativos filho. As pesquisas com escopo de subárvore enraizado em um cabeçalho de partição de diretório de aplicativo gerarão referências de continuação para as partições de diretório de aplicativo filho.
Uma réplica de partição de diretório de aplicativos só pode ser criada em um controlador de domínio que esteja sendo executado no Windows Server 2003 e posterior e somente enquanto a função FSMO de nomeação de domínio for mantida por um controlador de domínio do Windows Server 2003 e posterior. Em uma floresta mista que tenha controladores de domínio do Windows Server 2003 e controladores de domínio de nível inferior (controladores de domínio do Windows 2000 ou controladores de domínio primários do Windows NT 4.0), uma tentativa de criar uma réplica de partição de diretório de aplicativos em um controlador de domínio de nível inferior falhará.
Uma partição de diretório de aplicativos também tem um objeto crossRef correspondente no contêiner Partitions da partição de configuração. O crossRef pode ser pré-criado manualmente antes de criar o objeto domainDNS. O objeto crossRef pré-criado deve ter os valores de atributo mostrados na tabela a seguir ou a criação da partição falhará. Se o objeto crossRef não existir, o servidor do Active Directory criará um quando a partição de diretório de aplicativos for criada.
Atributo | Descrição |
---|---|
dnsRaiz | Contém o caminho DNS do controlador de domínio no qual a partição de diretório de aplicativos será criada. |
Enabled | Contém FALSE. |
nCName | Contém o nome distinto da partição. No exemplo acima, esse atributo conteria "DC=dynamicdata,DC=mydomain,DC=com". |
Para criar uma nova partição de diretório de aplicativos com sua primeira réplica, execute as seguintes etapas
Vincule ao namespace da nova partição, especificando o controlador de domínio que hospedará a partição de diretório de aplicativos no ADsPath. Por exemplo, para criar uma partição com um ADsPath de "DC=dynamicdata,DC=mydomain,DC=com", o ADsPath de ligação seria "LDAP://< domain controller/DC=mydomain,DC=com", onde "domain controller>>"< é o nome DNS do controlador de domínio que hospedará a partição.
A operação de ligação deve especificar as opções de rapidez e delegação. A opção rápida permite que a associação seja bem-sucedida mesmo que o namespace não exista. A opção de delegação é necessária para permitir que o controlador de domínio entre em contato com o titular da função FSMO de Nomeação de Domínio usando as mesmas credenciais.
A versão do sistema do controlador de domínio deve ser o sistema operacional Windows Server 2003 e posterior.
Crie um objeto domainDNS com um nome apropriado para a partição, por exemplo, "DC=dynamicdata", para representar o cabeçalho de contexto de nomeação para a nova partição. O objeto domainDNS deve ter um atributo instanceType com um valor de 5 (DS_INSTANCETYPE_IS_NC_HEAD | DS_INSTANCETYPE_NC_IS_WRITEABLE). O atributo instanceType só pode ser definido no momento da criação porque é um atributo somente do sistema.
Quando o objeto domainDNS for criado, o servidor do Active Directory executará as seguintes etapas:
Procura um objeto crossRef no contêiner Partitions que tenha um valor de atributo nCName que corresponda ao nome distinto da partição e, se uma correspondência for encontrada, modifica o objeto crossRef para representar a partição de diretório do aplicativo. Se um objeto crossRef correspondente não for encontrado, o servidor do Active Directory criará um novo objeto crossRef para representar a partição do diretório de aplicativos.
A tabela a seguir lista atributos importantes do objeto crossRef.
Atributo Descrição nCName Contém o nome distinto da partição. dnsRaiz Contém o nome DNS da partição. msDS-NC-Replica-Locais O nome distinto do objeto nTDSDSA do controlador de domínio para a primeira réplica é adicionado a esse atributo. Inicie uma sincronização da partição de configuração e aguarde a conclusão. Isso permite que o aplicativo cliente modifique os parâmetros de configuração para a partição de diretório de aplicativos recém-criada enquanto estiver vinculado ao mesmo controlador de domínio usado para criar a partição de diretório de aplicativos.
Crie o objeto domainDNS com os sinalizadores DS_INSTANCETYPE_IS_NC_HEAD e DS_INSTANCETYPE_NC_IS_WRITEABLE definidos na propriedade instanceType. A propriedade instanceType também pode conter outros sinalizadores privados.
Preencha o atributo ms-DS-Has-Master-NCs do objeto nTDSDSA para o controlador de domínio de destino com o nome distinto da partição de diretório de aplicativos recém-criada.
Quando a partição de diretório de aplicativos é criada ou quando uma nova réplica da partição de diretório de aplicativos é adicionada e totalmente sincronizada, o servidor do Active Directory registra corretamente a réplica com NetLogon e DNS. Para obter mais informações e uma lista dos registros SRV registrados, consulte Localizando um servidor host de partição de diretório de aplicativos.
Para obter mais informações sobre como criar uma partição de diretório de aplicativos, consulte Código de exemplo para criar uma partição de diretório de aplicativos.
Localizando o contêiner de partições
O nome distinto do contêiner Partições pode ser encontrado de duas maneiras. A primeira é mais complicada de executar, mas sempre fornecerá um resultado preciso:
- Vincule-se ao RootDSE e obtenha o atributo configurationNamingContext .
- Use o atributo configurationNamingContext para vincular ao contêiner de configuração.
- Pesquise no contêiner de configuração um objeto do tipo crossRefContainer.
- Obtenha o valor do atributo distinguishedName do objeto crossRefContainer . Esse será o nome distinto do contêiner Partições.
Para obter mais informações e um exemplo de código que mostra esse método para localizar o contêiner Partições, consulte a função GetPartitionsDNSearch em Código de exemplo para localizar o contêiner de partições.
O segundo método é mais fácil de implementar, mas depende do contêiner Partitions ter um nome distinto relativo específico. No momento, não é possível alterar o nome do contêiner Partições, mas se esse recurso for adicionado no futuro, o procedimento abaixo não funcionará corretamente se o contêiner Partições tiver sido renomeado.
- Vincule-se ao RootDSE e obtenha o atributo configurationNamingContext .
- Combine a cadeia de caracteres "CN=Partitions", seguida pelo atributo configurationNamingContext para formar o nome distinto do contêiner Partitions. O nome distinto estará no formato "CN=Partições,DN< de configuração>".
Para obter mais informações e um exemplo de código que mostra esse método para localizar o contêiner Partições, consulte a função GetPartitionsDNManual em Código de exemplo para localizar o contêiner de partições.