Compartilhar via


Como implementar um resolvedor de conflitos personalizado com base em COM para um artigo de mesclagem (Programação de Replicação)

O namespace Microsoft.SqlServer.Replication.BusinessLogicSupport implementa uma interface, permitindo que você grave lógicas empresariais complexas para manipular eventos e resolva conflitos que ocorram durante o processo de sincronização da replicação de mesclagem. Para obter mais informações, consulte Como implementar um manipulador de lógica de negócios para um artigo de mesclagem (Programação de replicação). Você também pode escrever sua própria lógica corporativa personalizada com base em código nativo para resolver conflitos. Essa lógica é criada como um componente COM e compilada em bibliotecas de vínculo dinâmico (DLL), usando produtos como o Microsoft Visual C++. O resolvedor de conflitos personalizado com base em COM deve implementar a interface ICustomResolver, que é projetada especificamente para resolução de conflitos.

Para criar e registrar um resolvedor de conflitos personalizado com base em COM

  1. Em um ambiente de criação compatível com o COM, adicione referências à biblioteca do Resolvedor de Conflitos Personalizado.

  2. Para um projeto de Visual C++, use a diretiva #import para importar essa biblioteca para o seu projeto.

  3. Crie uma classe que implemente a interface ICustomResolver.

  4. Implemente certos métodos e propriedades.

  5. Construa o projeto para criar o arquivo da biblioteca do resolvedor de conflitos.

  6. Implemente a biblioteca no diretório que contém o executável do agente de mesclagem (normalmente \Microsoft SQL Server\100\COM).

    ObservaçãoObservação

    Um resolvedor de conflitos personalizado deve ser implantado no Assinante para uma assinatura pull, no Distribuidor para uma assinatura push ou no servidor Web usado com a sincronização da Web.

  7. Registre a biblioteca do resolvedor de conflitos personalizado usando o regsvr32.exe do diretório de implantação como segue:

    regsvr32.exe mycustomresolver.dll
    
  8. No Publicador, execute sp_enumcustomresolvers (Transact-SQL) para verificar se a biblioteca já não está registrada como um resolvedor de conflitos personalizado.

  9. Para registrar a biblioteca como um resolvedor de conflitos personalizado, execute sp_registercustomresolver (Transact-SQL), no Distributor. Especifique o nome amigável do objeto COM para @article_resolver, o ID da biblioteca (CLSID) para @resolver_clsid e um valor de false para @is_dotnet_assembly.

    ObservaçãoObservação

    Quando não for mais necessário, um resolvedor de conflitos personalizado poderá ser registrado, usando sp_unregistercustomresolver (Transact-SQL).

  10. (Opcional) Em um cluster, repita as etapas de 5 a 8 para registrar o resolvedor personalizado em todos os nós do cluster. Isso é necessário para garantir que o resolvedor personalizado esteja apto a carregar adequadamente o reconciliador, seguindo um failover.

Para usar um resolvedor de conflitos personalizado com um novo artigo de tabela

  1. No Publicador, execute sp_enumcustomresolvers (Transact-SQL) e observe o nome amigável do resolvedor desejado.

  2. No Publicador do banco de dados de publicação, execute sp_addmergearticle (Transact-SQL) para definir um artigo. Especifique o nome amigável do resolvedor do artigo na etapa 1 para @article_resolver. Para obter mais informações, consulte Como definir um artigo (Programação Transact-SQL de replicação).

Para usar um resolvedor de conflitos personalizado com um artigo de tabela existente

  1. No Publicador, execute sp_enumcustomresolvers (Transact-SQL) e observe o nome amigável do resolvedor desejado.

  2. Execute sp_changemergearticle (Transact-SQL), especificando @publication, @article, um valor de article_resolver para @property e o nome amigável do resolvedor do artigo na etapa 1 para @value.

Consulte também

Conceitos