ID do artigo: 308266 - Última revisão: quinta-feira, 16 de outubro de 2003 - Revisão: 3.2

PROBLEMA: Não-convergência ao SQL Server processos filho e pai gerações na geração separada em lotes

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Expandir tudo | Recolher tudo

Sintomas

Uma perda de comandos INSERT em tabelas filho em um assinante pode ocorrer sob as seguintes condições:
  • A topologia de replicação de mesclagem é hierárquica, com um editor, republishers um ou mais e um ou mais assinantes.

  • Existem um ou mais artigos pai e filho em uma publicação de replicação de mesclagem, com um filtro de associação definido entre eles.

  • Existe uma restrição de chave externa NOT FOR REPLICATION no reeditor e no assinante para o relacionamento entre esses dois artigos.

  • Insere em um artigo filho ocorre em uma geração separada da sua geração pai associada por mais do que o valor especificado no -DownloadGenerationsPerBatch parâmetro do agente de mesclagem. Portanto, o merge agent processa a geração de filho em um lote de gerações separadas da sua geração pai associada.

  • Há uma interrupção da mesclagem processamento entre o publisher e reeditor e entre o processamento de lotes de geração filho e pai.

Como Contornar

A arquitetura de replicação de mesclagem não fornece um mecanismo para manter alterações pai e filho juntas pela geração, limites de lote. Para contornar esse problema, você pode:
  • Aumentar os - parâmetros UploadGenerationsPerBatch e - DownloadGenerationsPerBatch Merge Agent para seu valor máximo de 2000, que praticamente elimina a possibilidade de processamento de geração de um artigo filho em um lote separada da geração do artigo pai. - ou -

  • Remova a propriedade NOT FOR REPLICATION nas restrições de chave externa no reeditor. Nesse caso, o Merge Agent não é capaz de inserir linhas no artigo filho porque não existem linhas pai-artigo associado. Tenha em mente, no entanto, que existe poderia ser degradação do desempenho associada com essa alteração. Se o Merge Agent não conseguir inserir essas linhas filho, essas alterações devem ser "repetidas." O processo de repetição do Merge Agent é muito menos eficiente do que seu modo normal de processamento em lotes.

Mais Informações

Aqui é uma seqüência mais detalhada de eventos em que esse problema pode ocorrer. Observe que o padrão os valores de-parâmetros UploadGenerationsPerBatch e - DownloadGenerationsPerBatch Merge Agent (que urso muito sobre esse problema) é 100. No exemplo a seguir pressupõem que a opção-parâmetros UploadGenerationsPerBatch e - DownloadGenerationsPerBatch não foram alterados.
  • Insere ocorre no nível superior Editor em um artigo de pai e filho. Um artigo filho é qualquer artigo em uma publicação que tem uma restrição de chave externa para outra tabela, conhecida como um artigo pai. Esses dois artigos estão relacionados por um filtro de associação de replicação de mesclagem e as reais lado do servidor externas restrições de chave no assinante e no reeditor são marcadas com a propriedade NOT FOR REPLICATION. Você pode executar o procedimento sp_help armazenados nas tabelas para determinar se as restrições não são para replicação, se você não tiver certeza.

  • INSERTs na tabela filho ocorrem (por exemplo) na geração 110. INSERTs na tabela pai (por exemplo) ocorrem em geração 250. Observe que a separação entre esses gerações é maior do que o DownloadGenerationsPerBatch parâmetro.

  • O publisher-reeditor Merge Agent processa o lote de gerações que contêm gerações 101 a 200. Depois de processamento bem-sucedido deste lote e um download de alterações associadas nas gerações para o reeditor, reeditor publisher Merge Agent for interrompida. A interrupção ocorre antes que o Merge Agent pode processar gerações 201 a 300 (que contém as alterações do artigo pai). A interrupção pode ser devido a perda de conectividade de rede, um tempo limite da consulta e assim por diante. Observe que o Merge Agent pode confirmar as linhas filho artigo sem as linhas pai porque a restrição de chave externa do lado do servidor está marcada como sem réplica, assim "suspensão" a verificação da restrição.

  • Antes do publisher-reeditor agente de mesclagem inicia processamento novamente, o assinante reeditor agente de mesclagem começa uma sessão de mesclagem. Ele inicia o processo de download de alterações do reeditor.

  • Quando o reeditor-assinante Merge Agent processa geração 110 (o filho artigo INSERTs), ele avalia o filtro de associação presente entre o artigo filho e o artigo pai. Como as alterações do artigo pai não ainda chegou o reeditor, o Merge Agent determina que esses INSERTs filho não "qualificam" o filtro de associação. O Merge Agent downloads MSmerge_genhistory linha que representa geração 110, mas nenhuma das alterações na que geração. O Merge Agent conclui sua sessão com êxito.

  • Uma execução subseqüente do agente de mesclagem entre o publisher e o reeditor processa o lote de gerações que contêm os artigo pai INSERTs (gerações 201 a 300) e confirma essas alterações no reeditor com êxito.

  • Finalmente, uma sessão do Merge Agent subseqüente entre o reeditor e o assinante considera geração 250 e downloads de INSERTs artigo pai para o assinante. No entanto, porque o assinante também conhece geração 110 (geração do artigo filho), o Merge Agent não reavaliar partição do artigo filho.

    Isso resulta nas linhas pai-artigo correto sendo presentes no assinante com linhas filho "órfão" no reeditor.


A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Palavras-chave: 
kbmt kbpending kbprb KB308266 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 308266  (http://support.microsoft.com/kb/308266/en-us/ )