Compartilhar via


Especificar propriedades da replicação por mesclagem

Este tópico explica como especificar várias propriedades para sua replicação de mesclagem.

Apenas para download

Esta seção descreve como especificar que um artigo de tabela de mesclagem é exclusivamente para download no SQL Server 2014, por meio do SQL Server Management Studio ou do Transact-SQL. Os artigos exclusivamente para download são projetados para aplicativos com dados que não são atualizados nos dispositivos dos assinantes. Para obter mais informações, consulte Otimizar o desempenho da replicação de mesclagem com artigos somente para download.

Limitações e restrições

  • Se você especificar que um artigo é somente download após a inicialização das assinaturas, todas as assinaturas de cliente que receberam o artigo deverão ser reinicializadas. As assinaturas do servidor não precisam ser reinicializadas. Para obter mais informações sobre os efeitos das alterações de propriedade, consulte Alterar Publicação e Propriedades do Artigo.

Como usar o SQL Server Management Studio.

Especifique que um artigo é somente para download na página Artigos do Assistente para Nova Publicação ou na guia Propriedades da Caixa de diálogo Propriedades do Artigo – <Artigo>. Essa caixa de diálogo está disponível no Assistente para Nova Publicação e na caixa de diálogo Propriedades da Publicação – <Publicação> . Para obter mais informações sobre como usar o assistente e acessar a caixa de diálogo, consulte Criar uma publicação e exibir e modificar propriedades de publicação.

Para especificar que um artigo é apenas para download na página de Artigos

  • Na página Artigos do Assistente de Nova Publicação, selecione uma tabela e, em seguida, marque a caixa de seleção Tabela destacada é somente para download.

Para especificar que um artigo é somente para download na guia Propriedades do Artigo – <caixa de diálogo Artigo>

  1. Na página Artigos do Assistente para Nova Publicação ou na caixa de diálogo Propriedades da Publicação – <Publicação> , selecione uma tabela e clique em Propriedades do Artigo.

  2. Clique em Definir Propriedades do Artigo da Tabela Realçada ou Definir Propriedades de Todos os Artigos de Tabela.

  3. Na seção Objeto de Destino da guia Propriedades da caixa de diálogo Propriedades do Artigo – <Artigo> , especifique um dos seguintes valores para a direção de sincronização:

    • Baixar para Assinante, proibir alterações pelo Assinante
    • Baixar para o Assinante, permitir que o Assinante faça alterações
  4. Se você estiver na caixa de diálogo Propriedades da Publicação – <Publicação> , clique em OK para salvar e fechar a caixa de diálogo.

Usando Transact-SQL

Para especificar que um novo artigo de tabela de mesclagem é somente para download

  1. Execute sp_addmergearticle, especificando um valor de 1 ou 2 para o parâmetro @subscriber_upload_options. Os números correspondem ao seguinte comportamento:

    • 0 – Sem restrições (padrão). As alterações feitas no Assinante são enviadas para o Publicador.

    • 1 – As alterações são permitidas no Assinante, mas não são transferidas para o Publicador.

    • 2 – Alterações não são permitidas ao assinante.

      Observação

      Se a tabela de origem de um artigo já estiver publicada em outra publicação, o valor de @subscriber_upload_options deverá ser o mesmo para ambos os artigos.

Para modificar um artigo de tabela mesclada existente para que seja apenas para download

  1. Para determinar se um artigo é somente download, execute sp_helpmergearticle. Observe o valor de upload_options para o artigo no conjunto de resultados.

  2. Se o valor retornado na etapa 1 for 0, execute sp_changemergearticle especificando um valor de subscriber_upload_options para @property, um valor de 1 para @force_invalidate_snapshot e @force_reinit_subscription, e um valor de 1 ou 2 para @value, que corresponde ao seguinte comportamento:

    • 1 – As alterações são permitidas no Assinante, mas não são enviadas ao Publicador.

    • 2 – Alterações não são permitidas para o Assinante.

      Observação

      Se a tabela de origem de um artigo já estiver publicada em outra publicação, o comportamento somente download deverá ser o mesmo para ambos os artigos.

Resolução interativa de conflitos

A replicação do Microsoft SQL Server fornece um Resolvedor Interativo, que permite resolver conflitos manualmente durante a sincronização sob demanda no Microsoft Windows Synchronization Manager. Depois que a resolução interativa estiver habilitada, resolva conflitos interativamente durante a sincronização, usando o Resolvedor Interativo. O Resolvedor Interativo está disponível por meio do Microsoft Windows Synchronization Manager. Para obter mais informações, consulte Synchronize a Subscription Using Windows Synchronization Manager (Windows Synchronization Manager).

Recomendações

  • Se uma sincronização for executada fora do Gerenciador de Sincronização do Windows (como uma sincronização agendada ou uma sincronização sob demanda no SQL Server Management Studio ou no Replication Monitor), os conflitos serão resolvidos automaticamente sem intervenção do usuário, usando a resolução de conflitos padrão especificada para o artigo. Para obter mais informações, consulte Resolução interativa de conflitos.

Como usar o SQL Server Management Studio.

Habilitar a resolução interativa de conflitos para um artigo

  1. Na página Artigos do Assistente para Nova Publicação ou na caixa de diálogo Propriedades da Publicação – <Publicação> , selecione uma tabela. Para obter mais informações sobre como usar o assistente e acessar a caixa de diálogo, consulte Criar uma publicação e exibir e modificar propriedades de publicação.
  2. Clique em Propriedades do Artigo e, em seguida, clique em Definir Propriedades do Artigo de Tabela Realçada ou Definir Propriedades de Todos os Artigos de Tabela.
  3. Na página Propriedades do Artigo – <Artigo> ou Propriedades do Artigo – <ArticleType> , clique na guia Resolver .
  4. Selecione Permitir que o Assinante resolva conflitos interativamente durante a sincronização sob demanda.
  5. Clique em OK.
  6. Se você estiver na caixa de diálogo Propriedades da Publicação – <Publicação> , clique em OK para salvar e fechar a caixa de diálogo.

Para especificar que uma assinatura deve usar a resolução interativa de conflitos

  1. Na caixa de diálogo Propriedades da Assinatura – <Assinante>: <SubscriptionDatabase>, especifique um valor True para a opção Resolver conflitos interativamente. Para obter mais informações sobre como acessar essa caixa de diálogo, consulte Exibir e modificar propriedades de assinatura push e exibir e modificar propriedades de assinatura pull.
  2. Clique em OK.

Usando Transact-SQL

Você pode especificar programaticamente que um Assinante usará essa interface gráfica para resolver conflitos de artigo quando uma assinatura pull para uma publicação de mesclagem for criada. Somente conflitos em artigos que dão suporte a essa opção serão exibidos no Resolvedor Interativo.

Criar uma assinatura de mesclagem por pull que utiliza o Resolvedor Interativo

  1. No Publicador do banco de dados de publicações, execute sp_helpmergearticle, especificando @publication. Observe o valor de allow_interactive_resolver para cada artigo no conjunto de resultados para o qual o Resolvedor Interativo será usado.

    • Se esse valor for 1, o Resolvedor Interativo será usado.
    • Se esse valor for 0, primeiro você deverá habilitar o Resolvedor Interativo para cada artigo. Para fazer isso, execute sp_changemergearticle, especificando @publication, @article, um valor de allow_interactive_resolver para @property e um valor verdadeiro para @value.
  2. No Assinante do banco de dados de assinatura, execute sp_addmergepullsubscription. Para obter mais informações, consulte Criar uma assinatura pull.

  3. No banco de dados de assinaturas do assinante, execute sp_addmergepullsubscription_agent, especificando os seguintes parâmetros:

    • @publisher, @publisher_db (o banco de dados publicado) e @publication.
    • Um valor verdadeiro para @enabled_for_syncmgr.
    • Um valor verdadeiro para @use_interactive_resolver.
    • As informações da conta de segurança exigidas pelo Merge Agent. Para obter mais informações, consulte Criar uma assinatura pull.
  4. No Publicador do banco de dados de publicação, execute sp_addmergesubscription.

Definir um artigo que dê suporte ao Resolvedor Interativo

No banco de dados de publicação no Publicador, execute sp_addmergearticle. Especifique o nome da publicação à qual o artigo pertence para @publication, um nome para o artigo para @article, o objeto de banco de dados que está sendo publicado para @source_object e um valor verdadeiro para @allow_interactive_resolver. Para obter mais informações, consulte Define an Article.

Especificar o nível de rastreio e resolução de conflitos

Quando uma assinatura de uma publicação de mesclagem é sincronizada, a replicação verifica se há conflitos causados por alterações feitas nos mesmos dados tanto no Publicador quanto no Assinante. Você pode especificar se conflitos são detectados no nível da linha, em que qualquer alteração na linha é considerada um conflito ou nível de coluna, em que apenas as alterações na mesma linha e coluna são consideradas um conflito. A resolução de conflitos para artigos é realizada no nível de linha. Para obter mais informações sobre detecção e resolução de conflitos quando os registros lógicos são usados, consulte Detectando e resolvendo conflitos em registros lógicos.

Limitações e restrições

  • Se você modificar o nível de acompanhamento após a inicialização das assinaturas, essas assinaturas deverão ser reinicializadas. Para obter mais informações sobre os efeitos das alterações de propriedade, consulte Alterar Publicação e Propriedades do Artigo.
  • Com monitoramento em nível de linha e coluna, a resolução de conflitos sempre é executada no nível da linha: a linha vencedora sobrescreve a linha perdedora. A replicação de mesclagem também permite especificar que os conflitos sejam monitorados e resolvidos no nível do registro lógico, mas essas opções não estão disponíveis no SQL Server Management Studio. Para obter informações sobre como configurar essas opções por meio de procedimentos armazenados de replicação, consulte Definir uma relação de registro lógico entre artigos de tabela de mesclagem.

Como usar o SQL Server Management Studio.

Especifique o acompanhamento em nível de linha ou coluna para artigos de mesclagem na guia Propriedades da caixa de diálogo Propriedades do Artigo, que está disponível no Assistente para Nova Publicação e na caixa de diálogo Propriedades da Publicação – <Publicação>. Para obter mais informações sobre como usar o assistente e acessar a caixa de diálogo, consulte Criar uma publicação e exibir e modificar propriedades de publicação.

Especificar o acompanhamento em nível de linha ou coluna

  1. Na página Artigos do Assistente para Nova Publicação ou na caixa de diálogo Propriedades da Publicação – <Publicação> , selecione uma tabela.
  2. Clique em Propriedades do Artigo e, em seguida, clique em Definir Propriedades do Artigo de Tabela Realçada ou Definir Propriedades de Todos os Artigos de Tabela.
  3. Na guia Propriedades da caixa de diálogo Propriedades do artigo<Artigo>, selecione um dos seguintes valores para a propriedade Nível de Acompanhamento: Acompanhamento em Nível de Linha ou Acompanhamento em Nível de Coluna.
  4. Se você estiver na caixa de diálogo Propriedades da Publicação – <Publicação> , clique em OK para salvar e fechar a caixa de diálogo.

Usando Transact-SQL

Especificar opções de acompanhamento de conflitos para um novo artigo de mesclagem

  1. No Publicador do banco de dados de publicação, execute sp_addmergearticle e especifique um dos seguintes valores para @column_tracking:

    • true – Utilize o acompanhamento em nível de coluna para o artigo.
    • false – Use o acompanhamento em nível de linha, que é o padrão.

Alterar opções de controle de conflitos para um artigo de mesclagem

  1. Para determinar as opções de acompanhamento de conflitos para um artigo de mesclagem, execute sp_helpmergearticle. Observe o valor da opção column_tracking no conjunto de resultados do artigo. Um valor de 1 significa que o acompanhamento no nível da coluna está sendo usado e um valor de 0 significa que o acompanhamento em nível de linha está sendo usado.

  2. No Publicador do banco de dados de publicação, execute sp_changemergearticle. Especifique um valor de column_tracking para @property e um dos seguintes valores para @value:

    • true – Use o acompanhamento em nível de coluna para o artigo.
    • false – Use o acompanhamento em nível de linha, que é o padrão.

    Especifique um valor de 1 para @force_invalidate_snapshot e @force_reinit_subscription.

Controle de exclusões

Observação

Esse recurso será removido em uma versão futura do Microsoft SQL Server. Evite usar esse recurso em um novo trabalho de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso.

Por padrão, a replicação de mesclagem sincroniza comandos DELETE entre o Publicador e o Assinante. A replicação de mesclagem permite que você mantenha linhas no banco de dados de assinatura mesmo quando elas foram excluídas da publicação e vice-versa. Você pode especificar programaticamente que os comandos DELETE sejam ignorados ao criar um novo artigo ou habilite essa funcionalidade posteriormente usando procedimentos armazenados de replicação.

Importante

Habilitar essa funcionalidade resultará em não convergência, o que significa que os dados presentes no Assinante não refletirão com precisão os dados no Publicador. Você deve implementar seu próprio mecanismo para remover manualmente linhas excluídas.

Especifique que as exclusões sejam ignoradas para um novo artigo de mesclagem

  1. No banco de dados de publicação, no Publicador, execute sp_addmergearticle (Transact-SQL). Especifique um valor de false para @delete_tracking. Para obter mais informações, consulte Define an Article.

    Observação

    Se a tabela de origem de um artigo já estiver publicada em outra publicação, o valor de delete_tracking deverá ser o mesmo para ambos os artigos.

Especificar que as exclusões sejam ignoradas para um artigo de mesclagem existente

  1. Para determinar se a compensação de erro está habilitada para um artigo, execute sp_helpmergearticle (Transact-SQL) e observe o valor de delete_tracking no conjunto de resultados. Se esse valor é 0, as exclusões já estão sendo ignoradas.

  2. Se o valor da etapa 1 for 1, execute sp_changemergearticle (Transact-SQL) no Publicador no banco de dados de publicação. Especifique um valor de delete_tracking para @property e um valor de false para @value.

    Observação

    Se a tabela de origem de um artigo já estiver publicada em outra publicação, o valor de delete_tracking deverá ser o mesmo para ambos os artigos.

Ordem de processamento

A replicação de mesclagem permite especificar a ordem em que os artigos são processados pelo agente de mesclagem durante o processo de sincronização. Você pode atribuir uma ordem a cada artigo programaticamente ao criar um artigo usando procedimentos armazenados de replicação. Os artigos são processados na ordem do valor mais baixo para o mais alto. Se dois artigos tiverem o mesmo valor, serão processados simultaneamente. Para obter mais informações, confira propriedades de Especificar Replicação de Mesclagem.

A partir do Microsoft SQL Server 2005, é possível substituir a ordem padrão do processamento de artigo para publicações de mesclagem. Isso é útil, por exemplo, se você definir a integridade referencial por meio de gatilhos e esses gatilhos precisarem ser acionados em uma determinada ordem.

Como a ordem de processamento é determinada

Durante a sincronização de mesclagem, os artigos são, por padrão, processados na ordem exigida pelas dependências entre objetos, incluindo as restrições de DRI (integridade referencial declarativa) definidas nas tabelas base. O processamento envolve a enumeração das alterações em uma tabela e, em seguida, a aplicação dessas alterações. Se nenhum DRI estiver presente, mas houver filtros de junção ou registros lógicos entre artigos de tabela, os artigos serão processados na ordem exigida pelos filtros e registros lógicos. Artigos não relacionados a nenhum outro artigo por meio de DRI, filtros de associação, registros lógicos ou outras dependências são processados de acordo com o apelido de artigo na tabela sysmergearticles do sistema (Transact-SQL).

Considere uma publicação que inclui as tabelas SalesOrderHeader e SalesOrderDetail com uma coluna de chave primária SalesOrderID na tabela SalesOrderHeader e uma coluna de chave estrangeira correspondente SalesOrderID na tabela SalesOrderDetail . Durante a sincronização, a replicação por mesclagem impede violações de chave estrangeira ao inserir novas linhas em SalesOrderHeader antes de inserir as linhas associadas em SalesOrderDetail. Da mesma forma, as linhas são excluídas de SalesOrderDetail antes que a linha associada seja excluída de SalesOrderHeader.

No entanto, em alguns aplicativos, a integridade referencial é imposta por meio de gatilhos de banco de dados ou no nível do aplicativo, em vez de por meio de DRI. Considerando a publicação descrita acima, em vez de DRI, a tabela SalesOrderDetail pode ter um gatilho de inserção que garante que a linha associada na tabela SalesOrderHeader exista antes de permitir uma inserção. SalesOrderHeader pode ter um gatilho de exclusão que garante que não haja linhas associadas em SalesOrderDetail antes de permitir uma exclusão. A replicação por mesclagem não considera gatilhos ao determinar a ordem de processamento dos artigos porque não pode determinar qual será o resultado do gatilho até que ele seja acionado. Da mesma forma, a replicação não pode levar em conta as restrições definidas no nível do aplicativo.

Quando a integridade referencial é mantida por meio de gatilhos ou no nível do aplicativo, você deve especificar a ordem na qual os artigos devem ser processados. No exemplo com gatilhos, você especificaria que a tabela SalesOrderHeader deve ser processada antes de SalesOrderDetail, pois a ordenação de artigo é baseada na ordem de inserção. A replicação de mesclagem reverterá automaticamente a ordem das exclusões. A replicação de mesclagem não falhará sem a ordenação de artigos, pois o Merge Agent continuará processando os artigos caso ocorra uma violação de restrição; em seguida, ele tentará novamente todas as operações que falharam após o processamento de outros artigos. Especificar a ordem do artigo simplesmente evita novas tentativas e o processamento adicional associado a elas. Se você especificar uma ordem incorreta (por exemplo, uma que resulta em registros detalhados sendo processados antes dos registros de cabeçalho), a replicação de mesclagem tentará novamente o processamento até que ela seja bem-sucedida.

Novo artigo

  1. No banco de dados de publicação, no Publicador, execute sp_addmergearticle (Transact-SQL). Especifique um valor inteiro que representa a ordem de processamento do artigo para @processing_order. Para obter mais informações, consulte Define an Article.

    Observação

    Ao criar artigos ordenados, você deve deixar lacunas entre os valores da ordem do artigo. Isso facilita a definição de novos valores no futuro. Por exemplo, se você tiver três artigos para os quais precisa especificar uma ordem de processamento fixa, defina o valor de @processing_order como 10, 20 e 30 em vez de 1, 2 e 3, respectivamente.

Artigo existente

  1. Para determinar a ordem de processamento de um artigo, execute sp_helpmergearticle (Transact-SQL) e observe o valor de processing_order no conjunto de resultados.

  2. No Publicador no banco de dados de publicação, execute sp_changemergearticle (Transact-SQL). Especifique um valor de processing_order para @property e um valor inteiro que representa a ordem de processamento para @value.

Consulte Também

Otimizar o desempenho da replicação de mesclagem com controle de exclusão condicional
Detectando e resolvendo conflitos em registros lógicos
Definir um Relacionamento de Registro Lógico Entre Artigos de Tabela de Mesclagem
Detectar e solucionar conflitos na replicação de mesclagem
Otimizar o desempenho de replicação de mesclagem com os artigos Download-Only
Defina um Artigo
Exibir e modificar as propriedades do artigo