Tutorial: Configurar a replicação entre dois servidores totalmente conectados (Transacional)

Aplica-se a:SQL Server

A Replicação transacional é uma boa solução ao problema de movimentação de dados entre servidores que estão continuamente conectados. Como usar o Assistente de Replicação, você pode configurar e administrar uma topologia de replicação com facilidade.

Este tutorial mostra como configurar uma topologia de Replicação transacional para servidores continuamente conectados. Para saber mais sobre como funciona a replicação transacional, veja a visão geral da replicação transacional.

O que você aprenderá

Este tutorial ensina você a publicar dados de um banco de dados para outro usando replicação transacional.

Neste tutorial, você aprenderá a:

  • Criar um editor por meio da replicação transacional.
  • Criar um assinante para o editor transacional.
  • Validar a assinatura e a latência da medida.

Pré-requisitos

Este tutorial é destinado a usuários que estão familiarizados com operações básicas de banco de dados, mas que possuem 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. Estas edições não podem ser editores 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 Compact. O SQL Server Compact não pode ser um assinante em uma replicação transacional.

  • 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 o editor para a replicação transacional

Nesta seção, você criará uma publicação transacional usando o SQL Server Management Studio para publicar um subconjunto filtrado da tabela Product no banco de dados de exemplo do AdventureWorks2022. Você também adicionará o logon do SQL Server usado pelo Distribution Agent à PAL (lista de acesso à publicação).

Criar uma publicação e definir artigos

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

  2. Clique com o botão direito do mouse no SQL Server Agent e selecione Iniciar. O SQL Server Agent deve estar em execução antes da criação da publicação. Se essa etapa não iniciar o agente, você precisará fazer isso manualmente no SQL Server Configuration Manager.

  3. Expanda a pasta Replicação, clique com o botão direito do mouse na pasta Publicações Locais e selecione Nova Publicação. Essa etapa inicia o Assistente para Nova Publicação:

    Selections for starting 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 transacional e, em seguida, Avançar:

  6. Na página Artigos, expanda o nó Tabelas e marque a caixa de seleção Product. Em seguida, expanda Product e desmarque as caixas de seleção ao lado de ListPrice e StandardCost. Selecione Avançar.

  7. Na página Filtrar Linhas da Tabela, selecione Adicionar.

  8. Na caixa de diálogo Adicionar Filtro, selecione a coluna SafetyStockLevel. Selecione a seta para a direita para adicionar a coluna à cláusula WHERE da instrução filter da consulta de filtro. Em seguida, digite manualmente o modificador da cláusula WHERE da seguinte maneira:

    WHERE [SafetyStockLevel] < 500  
    

  9. Selecione OK e, em seguida, selecione Avançar.

  10. Marque a caixa de seleção Criar um instantâneo imediatamente e mantê-lo disponível para inicializar assinaturas e selecione Avançar:

  11. Na página Segurança do Agente, desmarque a caixa de seleção Usar as configurações de segurança do Agente de Instantâneo.

    Selecione Configurações de segurança para o Agente de Instantâneo. Insira <Nome_do_Computador_do_Editor>\repl_snapshot na caixa Conta de Processo, forneça a senha para essa conta e selecione OK.

  12. Repita a etapa anterior para definir <Nome_do_Computador_do_Editor>\repl_logreader como a conta de processo do Agente de Leitor de Log. Em seguida, selecione OK.

  13. Na página Concluir o Assistente, digite AdvWorksProductTrans na caixa Nome da publicação e selecione Concluir:

  14. Depois que a publicação for criada, selecione Fechar para concluir o assistente.

Você poderá receber o erro a seguir se o SQL Server Agent não estiver em execução quando você tentar criar a publicação. Esse erro indica que a publicação foi criada com êxito, mas o Agente de Instantâneo não pôde ser iniciado. Se isso acontecer, você precisará iniciar o SQL Server Agent e, em seguida, iniciar o Agente de Instantâneo manualmente. A próxima seção fornece instruções.

Warning that the Snapshot Agent has failed to start

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 AdvWorksProductTrans e, em seguida, selecione Exibir Status do Agente de Instantâneo:
    Command on the shortcut menu for viewing the Snapshot Agent status

  3. O status atual do trabalho do Agente de Instantâneo para a publicação é exibido. Verifique se o trabalho de instantâneo teve êxito antes de continuar para a próxima seção.

Se o SQL Server Agent não estava em execução quando a publicação foi criada, você verá que o Agente de Instantâneo "nunca foi executado" ao verificar o Status do agente de Instantâneo da publicação. Se esse for o caso, selecione Iniciar para iniciar o Agente de Instantâneo:

Se encontrar um erro aqui, confira Solução de problemas de erro com o Agente de Instantâneo.

Adicionar o logon Distribution Agent à 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 AdvWorksProductTrans e, em seguida, selecione Propriedades. A caixa de diálogo Propriedades da Publicação é exibida.

    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_Editor>\repl_distribution e selecione OK.

    Selections for adding a login to the publication access list

Para saber mais, veja Conceitos de programação de replicação.

Criar uma assinatura na publicação Transacional

Nesta seção, você adicionará um assinante à Publicação criada anteriormente. Este tutorial usa um assinante remoto (NODE2\SQL2016), mas você também pode adicionar localmente ao editor.

Criar 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 AdvWorksProductTrans e, em seguida, selecione Novas Assinaturas. O Assistente para Nova Assinatura é iniciado:

    Selections to start the New Subscription Wizard

  3. Na página Publicação, selecione AdvWorksProductTrans e, em seguida, Avançar:

  4. Na página Local do Agente de Distribuição, selecione Executar todos os agentes no Distribuidor e, em seguida, selecione Avançar. Para saber mais sobre assinaturas pull e push, veja Assinar publicações.

  5. Na página Assinantes, se o nome da instância de Assinante não for exibido, selecione Adicionar Assinante e, em seguida, Adicionar Assinante do SQL Server na lista suspensa. Essa etapa abre a caixa de diálogo Conectar ao Servidor. Insira o nome da instância de assinante e, em seguida, selecione Conectar.

    Depois que o Assinante for adicionado, marque a caixa ao lado do nome de instância da assinatura. Em seguida, selecione Novo Banco de Dados em Banco de Dados de Assinatura.

  6. A caixa de diálogo Novo Banco de Dados é exibida. Insira ProductReplica na caixa Nome do banco de dados, selecione OK e, em seguida, Avançar:

    Entering a name for the subscription database

  7. Na página Segurança do Agente de Distribuição, selecione o botão de reticências (...). Insira <Nome_do_Computador_do_Editor>\repl_distribution na caixa Conta do processo, insira a senha da conta, selecione OK e, em seguida, selecione Avançar.

    Distribution account information in the

  8. Selecione Concluir para aceitar os valores padrão nas páginas restantes e conclua o assistente.

Definir permissões de banco de dados 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.

    a. Na página Geral, em Nome de Logon, selecione Pesquisar e adicione o logon a <Subscriber_Machine_Name>\repl_distribution.

    b. Na página Mapeamentos de Usuário, conceda o logon de associação db_owner ao banco de dados ProductReplica.

    Selections for configuring the login on the subscriber

  2. Selecione OK para fechar a caixa de diálogo Novo Logon.

Exibir o status da sincronização da 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, expanda a publicação AdvWorksProductTrans, clique com o botão direito do mouse na assinatura no banco de dados ProductReplica e, em seguida, selecione Exibir Status da Sincronização. O status atual da sincronização da assinatura é exibido:

    Selections for opening the

  3. Se a assinatura não for visível sob AdvWorksProductTrans, selecione a tecla F5 para atualizar a lista.

Para saber mais, veja:

Medir a latência da replicação

Nesta seção, você usará os tokens de rastreamento para verificar se as alterações estão sendo replicadas para o assinante e para determinar a latência. Latência é o tempo necessário para que uma alteração feita no editor seja exibida no assinante.

  1. Conecte-se ao publicador no SQL Server Management Studio. Expanda o nó de servidor, clique com o botão direito do mouse na pasta Replicação e, em seguida, selecione Iniciar o Replication Monitor:

  2. Expanda um grupo editor no painel esquerdo, expanda a instância de editor e, em seguida, selecione a publicação AdvWorksProductTrans.

    a. Selecione a guia Tokens de Rastreamento.
    b. Selecione Inserir Rastreamento.
    c. Exiba o tempo decorrido para o token de rastreamento nas seguintes colunas: Publicador para Distribuidor, Distribuidor para Assinante, Latência Total. Um valor de Pendente indica que o token não alcançou determinado ponto.

    Information for the tracer token

Para saber mais, veja:

Próximas etapas

Você configurou com êxito o editor e o assinante para a replicação transacional. Agora você pode inserir, atualizar ou excluir dados da tabela Product no editor. Em seguida, você pode consultar a tabela Product no assinante para exibir as alterações replicadas.

O próximo artigo ensinará como configurar a replicação de mesclagem: