Tutorial: Configurar a replicação entre um servidor e clientes móveis (mesclagem)

Aplica-se a:SQL Server

A replicação de mesclagem é uma boa solução para o problema de movimentação de dados entre um servidor central e clientes móveis que são conectados apenas ocasionalmente. Usando os assistentes de replicação, é possível configurar e administrar uma topologia de replicação de mesclagem com facilidade.

Este tutorial mostra como você deve configurar uma topologia de replicação para clientes móveis. Para obter mais informações sobre a replicação de mesclagem, consulte a visão geral da replicação de mesclagem.

O que você aprenderá

Este tutorial ensina você a usar a replicação de mesclagem para publicar dados de um banco de dados central para um ou mais usuários móveis, de forma que cada usuário obtenha um subconjunto dos dados filtrado exclusivamente.

Neste tutorial, você aprenderá a:

  • Configurar um editor para a replicação de mesclagem.
  • Adicionar um assinante móvel à publicação de mesclagem.
  • Sincronizar a assinatura com a publicação de mesclagem.

Pré-requisitos

Este tutorial é destinado a usuários familiarizados com operações fundamentais de bancos de dados, mas que têm pouca experiência com replicação. Antes de iniciar este tutorial, é necessário concluir o Tutorial: Preparar o SQL Server para replicação.

Para concluir este tutorial, são necessários o SQL Server, o SSMS (SQL Server Management Studio) e um banco de dados do AdventureWorks:

  • No servidor do editor (origem), instale:

    • Qualquer edição do SQL Server, exceto o SQL Server Express ou o SQL Server Compact. Essas edições não podem ser um editor de replicação.
    • O banco de dados de exemplo AdventureWorks2022. Para reforçar a segurança, os bancos de dados de exemplo não são instalados por padrão.
  • No servidor do assinante (destino), instale qualquer edição do SQL Server, exceto o SQL Server Express ou o SQL Server Compact. A publicação criada neste tutorial não dá suporte ao SQL Server Express ou ao SQL Server Compact.

  • Instalar o SQL Server Management Studio.

  • Instale o SQL Server 2017 Developer Edition.

  • Baixe o banco de dados de exemplo do AdventureWorks. Para obter instruções sobre como restaurar um banco de dados no SSMS, veja Como restaurar um banco de dados.

Observação

  • A replicação não é compatível em instâncias do SQL Server que tenham um intervalo de mais de duas versões. Para saber mais, veja Supported SQL Server Versions in Replication Topology (Versões do SQL Server compatíveis na topologia de replicação).
  • No SQL Server Management Studio, é necessário conectar-se ao editor e ao assinante usando um logon que seja membro da função de servidor fixa sysadmin. Para saber mais sobre essa função, veja Funções de nível de servidor.

Tempo estimado para concluir este tutorial: 60 minutos

Configurar um editor para a replicação de mesclagem

Nesta seção, você criará uma publicação de mesclagem usando o SQL Server Management Studio para publicar um subconjunto das tabelas Employee, SalesOrderHeader e SalesOrderDetail no banco de dados de exemplo AdventureWorks2022. Essas tabelas são filtradas com filtros de linha com parâmetros de modo que cada assinatura contenha uma partição exclusiva dos dados. Você também adicionará o logon do SQL Server usado pelo Agente de Mesclagem à PAL (lista de acesso à publicação).

Criar uma publicação de mesclagem e definir artigos

  1. Conecte-se ao Publicador no SQL Server Management Studio e expanda o nó de servidor.

  2. Inicie o SQL Server Agent clicando com o botão direito do mouse no Pesquisador de Objetos e selecionando Iniciar. Se essa etapa não iniciar o agente, será necessário fazer isso manualmente no SQL Server Configuration Manager.

  3. Expanda a pasta Replicação, clique com o botão direito do mouse em Publicações Locais e selecione Nova Publicação. O Assistente para Nova Publicação é iniciado:

    Selections to start the New Publication Wizard

  4. Na página Banco de Dados de Publicação, selecione AdventureWorks2022 e, em seguida, Avançar.

  5. Na página Tipo de Publicação, selecione Publicação de mesclagem e, em seguida, Avançar.

  6. Na página Tipos de Assinante, verifique se somente o SQL Server 2008 (10.0.x) ou posterior está selecionado e, em seguida, selecione Avançar:

  7. Na página Artigos, expanda o nó Tabelas. Selecione as três tabelas a seguir: Employee, SalesOrderHeader e SalesOrderDetail. Selecione Avançar.

    Table selections on the

    Observação

    A tabela Employee contém uma coluna (OrganizationNode) que tem o tipo de dados hierarchyid. Esse tipo de dados é compatível com a replicação somente no SQL Server 2017.

    Se estiver usando um build anterior ao SQL Server 2017, será exibida uma mensagem na parte inferior da tela para notificá-lo de potencial perda de dados por usar essa coluna na replicação bidirecional. Para os fins deste tutorial, é possível ignorar essa mensagem. No entanto, esse tipo de dados não deve ser replicado em um ambiente de produção, a menos que você esteja usando um build compatível.

    Para obter mais informações sobre como replicar o tipo de dados hierarchyid, consulte Using hierarchyid columns in replication (Usando colunas hierarchyid na replicação).

  8. Na página Filtrar Linhas da Tabela, selecione Adicionar e, em seguida, Adicionar Filtro.

  9. Na caixa de diálogo Adicionar Filtro, selecione Funcionário (HumanResources) em Selecionar a tabela a ser filtrada. Selecione a coluna LoginID, selecione a seta para a direita para adicionar a coluna à cláusula WHERE da consulta de filtro e modifique a cláusula WHERE da seguinte maneira:

     WHERE [LoginID] = HOST_NAME()  
    

    Selecione Uma linha desta tabela vai para apenas uma assinatura e OK.

    Selections for adding a filter

  10. Na página Filtrar Linhas da Tabela, selecione Funcionário (Recursos Humanos), Adicionar e, em seguida, Adicionar Junção para Estender o Filtro Selecionado.

    a. Na caixa de diálogo Adicionar Junção, selecione Sales.SalesOrderHeader em Tabela unida. Selecione Gravar a instrução de junção manualmente e conclua a instrução de junção da seguinte maneira:

    ON [Employee].[BusinessEntityID] =  [SalesOrderHeader].[SalesPersonID] 
    

    b. Em Especificar opções de junção, selecione Chave exclusiva e, em seguida, selecione OK.

    Selections for adding a join to the filter

  11. Na página Filtrar Linhas da Tabela, selecione SalesOrderHeader, Adicionar e, em seguida, Adicionar Junção para Estender o Filtro Selecionado.

    a. Na caixa de diálogo Adicionar Junção , selecione Sales.SalesOrderDetail sob Tabela unida.
    b. Selecione Usar o construtor para criar a instrução.
    c. Na caixa Visualização, confirme se a instrução de junção é da seguinte maneira:

    ON [SalesOrderHeader].[SalesOrderID] = [SalesOrderDetail].[SalesOrderID] 
    

    d. Em Especificar opções de junção, selecione Chave exclusiva e, em seguida, selecione OK. Selecione Avançar.

    Selections for adding another join, for sales orders

  12. Selecione Criar um instantâneo imediatamente, desmarque a opção Agendar o agente de instantâneo para ser executado nos seguintes horários e selecione Avançar:

    Selection for creating a snapshot immediately

  13. Na página Segurança do Agente, selecione Configurações de Segurança. Insira <Nome_do_Computador_do_Editor>\repl_snapshot na caixa Conta de Processo, forneça a senha para essa conta e selecione OK. Selecione Avançar.

    Selections for setting Snapshot Agent security

  14. Na página Concluir o Assistente, insira AdvWorksSalesOrdersMerge na caixa Nome da publicação e selecione Concluir:

  15. Depois que a publicação for criada, selecione Fechar. No nó Replicação no Pesquisador de Objetos, clique com o botão direito do mouse em Publicações Locais e selecione Atualizar para exibir sua nova replicação de mesclagem.

Exibir o status de geração do instantâneo

  1. Conecte-se ao publicador no SQL Server Management Studio, expanda o nó de servidor e depois expanda a pasta Replicação.

  2. Na pasta Publicações Locais, clique com o botão direito do mouse em AdvWorksSalesOrdersMerge e selecione Exibir Status do Agente de Instantâneo:

    Selections for viewing Snapshot Agent status

  3. O status atual do trabalho do Agente de Instantâneo para a publicação é exibido. Certifique-se de que o trabalho de instantâneo teve sucesso antes de passar à próxima lição.

Adicionar o logon do Agente de Mesclagem à PAL

  1. Conecte-se ao publicador no SQL Server Management Studio, expanda o nó de servidor e depois expanda a pasta Replicação.

  2. Na pasta Publicações Locais, clique com o botão direito do mouse em AdvWorksSalesOrdersMerge e, em seguida, selecione Propriedades.

    a. Selecione a página Lista de Acesso à Publicação e Adicionar.

    b. Na caixa de diálogo Adicionar Acesso à Publicação, selecione <Nome_do_Computador_do_Publicador>\repl_merge e selecione OK. Selecione OK novamente.

    Selections for adding the Merge Agent login

Para saber mais, veja:

Criar uma assinatura para a publicação de mesclagem

Nesta seção, você adicionará uma assinatura à publicação de mesclagem criada anteriormente. Este tutorial usa o assinante remoto (NODE2\SQL2016). Em seguida, definirá permissões no banco de dados de assinatura e gerará manualmente o instantâneo de dados filtrados para a nova assinatura.

Adicionar um assinante à publicação de mesclagem

  1. Conecte-se ao assinante no SQL Server Management Studio e expanda o nó de servidor. Expanda a pasta Replicação, clique com o botão direito do mouse na pasta Assinaturas Locais e, em seguida, selecione Novas Assinaturas . O Assistente para Nova Assinatura é iniciado:

    Selections to start the New Subscription Wizard

  2. Na página Publicação, selecione Encontrar Publicador do SQL Server na lista Publicador.

    Na caixa de diálogo Conectar ao Servidor, insira o nome da instância de Publicador na caixa Nome do servidor e selecione Conectar.

    Selections for adding a publisher

  3. Selecione AdvWorksSalesOrdersMerge e Avançar.

  4. Na página Local do Agente de Mesclagem, selecione Executar cada agente em seu Assinante e, em seguida, selecione Avançar:

  5. Na página Assinantes, selecione o nome da instância do servidor do assinante. Em Banco de Dados de Assinatura, selecione Novo Banco de Dados na lista.

    Na caixa de diálogo Novo Banco de Dados, insira SalesOrdersReplica na caixa Nome do banco de dados. Selecione OK e, em seguida, selecione Avançar.

    Selections for adding a database to the subscriber

  6. Na página Segurança do Agente de Mesclagem, selecione o botão de reticências (...). Digite <Nome_do_Computador_do_Assinante>\repl_merge na caixa Conta de processo e forneça a senha para essa conta. Selecione OK, Avançar e, em seguida, Avançar novamente.

    Selections for Merge Agent security

  7. Na página Agenda de Sincronização, defina a Agenda do Agente como Executar somente sob demanda. Selecione Avançar.

  8. Na página Inicializar Assinaturas, selecione Na primeira sincronização da lista Inicializar quando. Selecione Avançar para ir para a página Tipo de Assinatura e, em seguida, selecione o tipo de assinatura adequado. Este tutorial usa o Cliente. Depois de selecionar o tipo de assinatura, selecione Avançar novamente.

    Selections for initializing subscriptions at first synchronization

  9. Na página Valores de HOST_NAME, insira um valor de adventure-works\pamela0 na caixa Valor de HOST_NAME. Em seguida, selecione Concluir.

  10. Selecione Concluir novamente. Depois que a assinatura for criada, selecione Fechar.

Definir permissões de servidor no assinante

  1. Conecte-se ao assinante no SQL Server Management Studio. Expanda Segurança, clique com o botão direito do mouse em Logons e, em seguida, selecione Novo Logon.

    Na página Geral, selecione Pesquisar e, em seguida, insira <Nome_do_Computador_do_Assinante>\repl_merge na caixa Insira o Nome do Objeto. Selecione Verificar Nomes e, em seguida, OK.

    Selections for setting the login

  2. Na página Mapeamento de Usuário, selecione o banco de dados SalesOrdersReplica e a função db_owner. Na página Protegíveis, conceda a permissão Explícita para Alterar Rastreamento. Selecione OK.

Criar o instantâneo de dados filtrados para a assinatura

  1. Conecte-se ao publicador no SQL Server Management Studio, expanda o nó de servidor e depois expanda a pasta Replicação.

  2. Na pasta Publicações Locais, clique com o botão direito do mouse na publicação AdvWorksSalesOrdersMerge e, em seguida, selecione Propriedades.

    a. Selecione a página Partições de Dados e Adicionar.
    b. Na caixa de diálogo Adicionar Partição de Dados, insira adventure-works\pamela0 na caixa Valor de HOST_NAME e, em seguida, selecione OK.
    c. Selecione a partição recém-adicionada, selecione Gerar os instantâneos selecionados agora e, em seguida, OK.

    Selections for adding a partition

Para saber mais, veja:

Sincronizar a assinatura com a publicação de mesclagem

Nesta seção, você iniciará o Agente de Mesclagem para inicializar a assinatura usando o SQL Server Management Studio. Você também usará este procedimento para sincronizar-se com o publicador.

Iniciar a sincronização e inicializar a assinatura

  1. Conecte-se ao assinante no SQL Server Management Studio.

  2. Certifique-se de que o SQL Server Agent está em execução. Se não estiver, clique com o botão direito do mouse no SQL Server Agent no Pesquisador de Objetos e selecione Iniciar. Se essa etapa não iniciar o agente, você precisará fazer isso manualmente usando o SQL Server Configuration Manager.

  3. Expanda o nó Replicação. Na pasta Assinaturas Locais, clique com o botão direito do mouse na assinatura no banco de dados SalesOrdersReplica e, em seguida, selecione Exibir Status da Sincronização.

    Selecione Iniciar para inicializar a assinatura.

    Synchronization status with

Próximas etapas

Você configurou com sucesso seu publicador e seu assinante para sua replicação de mesclagem. Também é possível:

  1. Inserir, atualizar ou excluir dados na tabela SalesOrderHeader ou SalesOrderDetail no publicador ou no assinante.
  2. Repetir esse procedimento quando a conectividade de rede está disponível para sincronizar dados entre o publicador e o assinante.
  3. Consultar a tabela SalesOrderHeader ou SalesOrderDetail no outro servidor para exibir as alterações replicadas.

Para saber mais, veja: