Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este tópico descreve como especificar um resolvedor de artigo de mesclagem no SQL Server 2014 usando o SQL Server Management Studio ou o Transact-SQL.
Nesse Tópico
Antes de começar:
Para especificar um resolvedor de artigo de mesclagem usando:
Antes de começar
Recomendações
A replicação de mesclagem permite os seguintes tipos de resolvedores de artigo:
O resolvedor padrão. O comportamento do resolvedor padrão depende se a assinatura é uma assinatura de cliente ou uma assinatura de servidor. Para obter mais informações sobre como especificar o tipo de assinatura, consulte Especificar um tipo de assinatura de mesclagem e prioridade de resolução de conflitos (SQL Server Management Studio).
Um resolvedor personalizado que você escreveu, que pode ser um manipulador de lógica de negócios (escrito em código gerenciado) ou um resolvedor personalizado baseado em COM. Para obter mais informações, consulte Detecção e resolução de conflitos de replicação de mesclagem avançada. Se você precisar implementar uma lógica personalizada que seja executada para cada linha replicada, e não apenas para linhas conflitantes, consulte Implementar um manipulador de lógica de negócios para um artigo de mesclagem.
Um resolvedor baseado em COM padrão, que é incluído no Microsoft SQL Server.
Para usar um resolvedor diferente do resolvedor padrão, você deve copiar o resolvedor para o computador no qual o Merge Agent o executa e registrá-lo (se você estiver usando um manipulador de lógica de negócios, ele também deverá ser registrado no Publicador). O Merge Agent é executado às:
O Distribuidor para uma assinatura de notificação push
O Assinante para uma assinatura de extração
O servidor dos Serviços de Informações da Internet da Microsoft (IIS) para uma assinatura de pull que utiliza a sincronização da Web
Como usar o SQL Server Management Studio.
Depois que o resolvedor for registrado, especifique que um artigo deve usar o resolvedor na guia Resolver da caixa de diálogo Propriedades do Artigo – <Artigo>, que está disponível no Assistente para a 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 um resolvedor
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.
Clique em Propriedades do Artigo e, em seguida, clique em Definir Propriedades do Artigo de Tabela Realçada.
Na página Propriedades do Artigo – <Artigo> , clique na guia Resolver .
Selecione Usar um resolvedor personalizado (registrado no Distribuidor) e, na lista, clique no resolvedor.
Se o resolvedor exigir entrada (como um nome de coluna), especifique-a na caixa de texto Insira as informações necessárias para o resolvedor.
Clique em OK.
Repita esse processo para cada artigo que requer um resolvedor.
Usando Transact-SQL
Para registrar um resolvedor de conflitos personalizado
Se você planeja registrar seu próprio resolvedor de conflitos personalizado, crie um dos seguintes tipos:
Resolvedor baseado em código gerenciado como um manipulador de lógica de negócios. Para obter mais informações, consulte Implementar um manipulador de lógica de negócios para um artigo de mesclagem.
Resolvedor baseado em procedimento armazenado e resolvedor baseado em COM. Para obter mais informações, consulte Implementar um resolvedor de conflitos personalizado para um artigo de mesclagem.
Para determinar se o resolvedor desejado já está registrado, execute sp_enumcustomresolvers (Transact-SQL) no Publicador em qualquer banco de dados. Isso exibe uma descrição do resolvedor personalizado, bem como o CLSID (identificador de classe) para cada resolvedor baseado em COM registrado no Distribuidor ou informações sobre o assembly gerenciado para cada manipulador de lógica de negócios registrado no Distribuidor.
Se o resolvedor personalizado desejado ainda não estiver registrado, execute sp_registercustomresolver (Transact-SQL) no Distribuidor. Especifique um nome para o resolvedor para @article_resolver; para um manipulador de lógica de negócios, esse é o nome amigável do assembly. Para resolvedores baseados em COM, especifique o CLSID da DLL para @resolver_clsid e, para um manipulador de lógica de negócios, especifique um valor para
true@is_dotnet_assembly, o nome do assembly para @dotnet_assembly_name e o nome completamente qualificado da classe que substitui BusinessLogicModule para @dotnet_class_name.Observação
Se um assembly do manipulador de lógica de negócios não for implantado no mesmo diretório que o executável do Merge Agent, no mesmo diretório que o aplicativo que inicia de forma síncrona o Merge Agent ou no GAC (cache de assembly global), você precisará especificar o caminho completo com o nome do assembly para @dotnet_assembly_name.
Se o resolvedor for um resolvedor baseado em COM:
Copie a DLL do resolvedor personalizado para o Distribuidor para assinaturas push ou para o Assinante para assinaturas pull.
Observação
Resolvedores personalizados da Microsoft podem ser encontrados no diretório C:\Arquivos de Programas\Microsoft SQL Server\120\COM.
Use regsvr32.exe para registrar a DLL do resolvedor personalizado com o sistema operacional. Por exemplo, a execução do seguinte no prompt de comando registra o Resolvedor de Conflitos Aditivos do SQL Server:
regsvr32 ssradd.dll
Se o resolvedor for um manipulador de lógica de negócios, implante o assembly na mesma pasta que o executável do Merge Agent (replmerg.exe), na mesma pasta de um aplicativo que invoca o Merge Agent ou na pasta especificada para o parâmetro @dotnet_assembly_name na etapa 3.
Observação
O local de instalação padrão do executável do Merge Agent é C:\Program Files\Microsoft SQL Server\120\COM.
Para especificar um resolvedor personalizado ao definir um artigo de mesclagem
Se você planeja usar um resolvedor de conflitos personalizado, crie e registre o resolvedor usando o procedimento acima.
No Publicador, execute sp_enumcustomresolvers (Transact-SQL) e anote o nome do resolvedor personalizado desejado no campo de valor do conjunto de resultados.
No banco de dados de publicação, no Publicador, execute sp_addmergearticle (Transact-SQL). Especifique o nome do resolvedor da etapa 2 para @article_resolver e qualquer entrada necessária para o resolvedor personalizado usando o parâmetro @resolver_info . Para resolvedores personalizados baseados em procedimento armazenado, @resolver_info é o nome do procedimento armazenado. Para obter mais informações sobre a entrada necessária para resolvedores fornecidos pela Microsoft, consulte Microsoft COM-Based Resolvedores.
Para especificar ou alterar um resolvedor personalizado para um artigo de mesclagem existente
Para determinar se um resolvedor personalizado foi definido para um artigo ou para obter o nome do resolvedor, execute sp_helpmergearticle (Transact-SQL). Se houver um resolvedor personalizado definido para o artigo, seu nome será exibido no campo article_resolver . Qualquer entrada fornecida ao resolvedor será exibida no campo resolver_info do conjunto de resultados.
No Publicador, execute sp_enumcustomresolvers (Transact-SQL) e anote o nome do resolvedor personalizado desejado no campo de valor do conjunto de resultados.
No Publicador no banco de dados de publicação, execute sp_changemergearticle (Transact-SQL). Especifique um valor de article_resolver, incluindo o caminho completo para manipuladores de lógica de negócios, para @property e o nome do resolvedor personalizado desejado da etapa 2 para @value.
Para alterar qualquer entrada necessária para o resolvedor personalizado, execute sp_changemergearticle (Transact-SQL) novamente. Especifique um valor de resolver_info para @property e qualquer entrada necessária para o resolvedor personalizado para @value. Para resolvedores personalizados baseados em procedimento armazenado, @resolver_info é o nome do procedimento armazenado. Para obter mais informações sobre a entrada necessária, consulte Microsoft COM-Based Resolvers.
Para cancelar o registro de um resolvedor de conflitos personalizado
No Publicador, execute sp_enumcustomresolvers (Transact-SQL) e anote o nome do resolvedor personalizado a ser removido no campo value do conjunto de resultados.
Execute sp_unregistercustomresolver (Transact-SQL) no Distribuidor. Especifique o nome completo do resolvedor personalizado da etapa 1 para @article_resolver.
Exemplos (Transact-SQL)
Este exemplo cria um novo artigo e especifica que o Resolvedor de Conflitos de Média do SQL Server seja usado para calcular a média da coluna UnitPrice quando ocorrerem conflitos.
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
SET @publication = 'AdvWorksSalesOrdersMerge';
SET @article = 'Products';
EXEC sp_addmergearticle
@publication = @publication,
@article = @article,
@source_object = @article,
@article_resolver = 'Microsoft SQL Server Averaging Conflict Resolver',
@resolver_info = 'UnitPrice';
GO
Este exemplo altera um artigo para especificar o uso do Resolvedor de Conflitos Aditivos do SQL Server para calcular a soma da coluna UnitsOnOrder quando ocorrerem conflitos.
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
SET @publication = 'AdvWorksSalesOrdersMerge';
SET @article = 'Products';
EXEC sp_changemergearticle
@publication = @publication,
@article = @article,
@property='article_resolver',
@value='Microsoft SQL Server Additive Conflict Resolver';
EXEC sp_changemergearticle
@publication = @publication,
@article = @article,
@property='resolver_info',
@value='UnitsOnOrder';
GO
Consulte Também
Detecção e resolução avançadas de conflitos de replicação de mesclagem
Implementar um Manipulador de Lógica de Negócios para um Artigo de Mesclagem