PROBLEMA

Edições em relacionamentos, onde o objectid é a chave primária, podem ser sincronizadas incorretamente com replicação bidirecional e unilateral

Last Published: January 8, 2021

Descrição

A chave primária para um relacionamento pode ser baseada em um geodatabase mantido GlobalID, um aplicativo ou chave primária mantida pelo cliente ou um objectid mantido em um geodatabase. Em alguns casos de uso, as edições envolvendo relacionamentos podem ser sincronizadas incorretamente quando a chave primária para o relacionamento é baseada em uma coluna objectid (OID).

Nota: Este artigo se refere apenas às versões 9.x do ArcGIS. Versões posteriores do ArcGIS podem conter diferentes funcionalidades, bem como diferentes nomes e locais para menus, comandos e ferramentas de geoprocessamento.

A seguir está um exemplo de caso de uso em que as edições são sincronizadas incorretamente.

Considere um exemplo onde há uma classe de feição de postes e uma tabela de transformadores em uma réplica bidirecional. Neste exemplo, há uma classe de relacionamento simples entre os postes e os transformadores. Poles é a classe de origem e a chave primária é sua coluna objectid. Transformers é a classe de destino e a chave estrangeira é uma longa coluna inteira chamada poleid.

O seguinte descreve um caso de uso em que os relacionamentos não são sincronizados corretamente.

  1. Um novo poste (objectid = 10) é adicionado ao geodatabase da réplica primária.
  2. Um novo transformador (objectid = 100) é adicionado à réplica primária.
  3. A réplica é então sincronizada do primário para o secundário, o que adiciona o novo poste e o transformador à réplica secundária. O objectid atribuído ao novo poste na réplica secundária é 12. Isso ocorre porque o objectid 10 já é usado por outra feição na réplica secundária. O objectid atribuído ao novo transformador é 105. Os globalids para essas linhas são idênticos aos valores correspondentes no geodatabase primário e são usados ​​para manter a correspondência subsequente entre as feições.
  4. No primário, um novo relacionamento é adicionado entre o pacote com objectid 10 e o transformador com objectid 100. Isso define o valor do poste integrado (chave externa) na linha do transformador para 10.
  5. A réplica é sincronizada novamente do primário para o secundário. A alteração na linha do transformador no primário é aplicada à linha do transformador no geodatabase secundário com objectid 105 (usando os globalids para estabelecer correspondência). No entanto, o valor atualizado do poloide na linha do transformador secundário está incorreto. Ele foi atualizado para 10, mas deveria ser 12.

O exemplo descrito acima funcionaria corretamente se a edição para criar a relação entre o poste e o transformador tivesse sido feita na mesma geração de edições em que o poste e o transformador foram originalmente criados. Por exemplo, se o relacionamento foi criado antes da sincronização na etapa 3. O algoritmo de sincronização registra a mudança no objectid do poste na criação e usa-o para atualizar a chave externa no transformador corretamente.

Observações sobre casos de uso em que as edições são sincronizadas corretamente:

Os casos de uso em que as edições são sincronizadas corretamente correspondem a fluxos de trabalho comuns com anotação vinculada à feição, que se baseia em objectid como chave primária. O fluxo de trabalho mais comum envolve a criação de uma feição junto com sua anotação vinculada como parte da mesma sessão de edição. Após uma anotação ser criada para uma feição, seu relacionamento com essa feição não é alterada nas edições subsequentes. Nem todos os fluxos de trabalho envolvendo anotações vinculadas à feição são suportadas. Por exemplo, a criação de uma nova parte de anotação relacionada para uma feição em uma geração que não envolve a criação da feição não é suportada. Os fluxos de trabalho suportados contam com ArcGIS 9.2 Service Pack 5.

Causa

Em alguns casos de uso (consulte a seção Descrição acima), as edições envolvendo relacionamentos podem ser sincronizadas incorretamente com a replicação bidirecional e unidirecional quando a chave primária para o relacionamento é baseada em uma coluna objectid (OID).

Solução ou Solução Provisória

Este problema foi resolvido no ArcGIS 9.2 Service Pack 6 e ArcGIS 9.3. Um caso adicional também foi abordado na seguinte correção ArcGIS 9.2 Service Pack 6 como também ArcGIS 9.3 Service Pack 1.

Além disso, esse problema não é encontrado ao editar e sincronizar relacionamentos com réplicas bidirecionais e unidirecionais usando colunas GlobalID ou chaves primárias definidas pelo cliente, como EquipmentID, que são exclusivas em todos os bancos de dados, como as chaves primárias no relacionamento.

No exemplo acima, onde as edições são sincronizadas incorretamente, a classe de relacionamento poderia ter sido definida com a coluna globalid dos postes como a chave primária e uma coluna guid dos transformadores como a chave externa. As classes de relacionamento que usam um globalid como a chave primária requerem uma coluna guid como a chave externa. Nesse caso de uso, o relacionamento teria sido sincronizado corretamente, uma vez que os valores globalid e guid são os mesmos nas réplicas.

ID do Artigo:000009966

Obtenha ajuda de especialistas do ArcGIS

Entre em contato com suporte técnico

Baixe o Esri Support App

Ir para opções de download

Informações Relacionadas

Descubra mais sobre este tema