Como a replicação de instantâneo funciona

Por padrão, todos os três tipos de replicação usam um instantâneo para inicializar os Assinantes. O Snapshot Agent do SQL Server sempre gera os arquivos de instantâneo, mas o agente que distribui os arquivos pode diferir dependendo do tipo de replicação que estiver sendo usada. A replicação transacional e a de instantâneo usam o Distribution Agent para distribuir os arquivos, ao passo que a replicação de mesclagem usa o Merge Agent doSQL Server. O Snapshot Agent executa no Distribuidor. O Distribution Agent e o Merge Agent são executados no Distribuidor para as assinaturas push ou no Assinante para assinaturas pull. Para obter mais informações sobre assinaturas push e pull, consulte Assinando publicações. Para obter mais informações sobre agentes, consulte Visão geral dos agentes de replicação..

Os instantâneos podem ser gerados e aplicados imediatamente após a assinatura ser criada ou de acordo com uma programação definida no momento que a publicação for criada. O Snapshot Agent prepara os arquivos de instantâneo que contêm o esquema e os dados das tabelas publicadas e os objetos do banco de dados, armazena os arquivos na pasta do instantâneo para o Publicador e registra o rastreamento de informações do banco de dados de distribuição no Distribuidor. Você especifica uma pasta padrão de instantâneo quando configura um Distribuidor, mas você pode especificar um local alternativo para uma publicação além do padrão. Para obter mais informações, consulte Locais da pasta de instantâneos alternativos.

ObservaçãoObservação

Além do processo de instantâneo padrão descrito neste tópico, um processo de instantâneo em duas partes é usado para publicação de mesclagem com filtros com parâmetros. Para obter mais informações, consulte Instantâneos para publicações de mesclagem com filtros com parâmetros.

A ilustração a seguir mostra os principais componentes de replicação de instantâneo.

Componentes e fluxo de dados de replicação de instantâneo

Snapshot Agent

Para replicação de mesclagem, um instantâneo é gerado toda vez que o Snapshot Agent é executado. Para replicação transacional, a geração de instantâneo depende da configuração da propriedade de publicação de immediate_sync. Se a propriedade estiver definida como TRUE (padrão ao usar o Assistente para Nova Publicação), um instantâneo será gerado toda vez que o Snapshot Agent for executado e poderá ser aplicado ao Assinante a qualquer momento. Se a propriedade estiver definida como FALSE (padrão ao usar sp_addpublication), o instantâneo só será gerado se uma assinatura nova for adicionada desde a última execução do Snapshot Agent. Os assinantes devem esperar que o Snapshot Agent termine antes de poder sincronizar-se.

O Snapshot Agent executa as seguintes etapas:

  1. Estabelece uma conexão do Distribuidor para o Publicador e, em seguida, leva os bloqueios em tabelas publicadas, se necessário:

    • Para publicações de mesclagem, o Snapshot Agent não leva nenhum bloqueio.

    • Para publicações transacionais, por padrão o Snapshot Agent leva bloqueios somente durante a fase inicial de geração de instantâneo.

    • Para publicações de instantâneo, bloqueios são retidos durante todo o processo de geração de instantâneo.

  2. Grava uma cópia do esquema de tabela para cada artigo em um arquivo .sch. Se outros objetos de banco de dados forem publicados, como índices, exibições, tipos de dados, procedimentos armazenados, exibições, funções definidas pelo usuário, e assim por diante, arquivos de script adicionais serão gerados.

  3. Copia os dados da tabela publicada no Publicador e grava os dados na pasta de instantâneo. O instantâneo é gerado como um conjunto de arquivos de programa de cópia em massa (BCP).

  4. Para as publicações transacionais e de instantâneo, o Snapshot Agent acrescenta linhas nas tabelas MSrepl_commands e MSrepl_transactions no banco de dados de distribuição. As entradas na tabela MSrepl_commands são comandos indicando o local dos arquivos .sch e .bcp, qualquer outro arquivo de instantâneo e as referências a qualquer script pré ou pós instantâneo. As entradas na tabela MSrepl_transactions são comandos importantes para sincronizar o Assinante.

    Para publicações de mesclagem, o Snapshot Agent executa etapas adicionais. Para obter mais informações, consulte Como a replicação de mesclagem inicializa as publicações e assinaturas.

  5. Libera qualquer bloqueio em tabelas publicadas.

Durante a geração de instantâneo, você não pode fazer alterações de esquema em tabelas publicadas. Depois que os arquivos de instantâneo forem gerados, você pode exibi-los na pasta de instantâneo usando o Windows Explorer .

Distribution Agent e Merge Agent

Para publicações de instantâneo, sempre que o Distribution Agent for executado para a publicação, ele moverá um novo instantâneo para cada Assinante que ainda não tiver sido sincronizado, marcado para reinicialização, ou incluirá novos artigos.

Para replicação de instantâneo e transacional, o Distribution Agent executará as seguintes etapas:

  1. Estabelece uma conexão com o Distribuidor.

  2. Examina as tabelas do MSrepl_commands e MSrepl_transactions no banco de dados de distribuição do Distribuidor. O agente lê o local dos arquivos de instantâneo da primeira tabela e os comandos de sincronização do Assinante de ambas as tabelas.

  3. Aplica o esquema e os comandos ao banco de dados de assinatura.

Para uma publicação de replicação de mesclagem não filtrada, o Merge Agent executa as seguintes etapas:

  1. Estabelece uma conexão com o Publicador.

  2. Examina a tabela sysmergeschemachange no Publicador e determina se existe um novo instantâneo que deve ser aplicado no Assinante.

  3. Se um novo instantâneo estiver disponível, o Merge Agent aplicará ao banco de dados de assinatura os arquivos de instantâneo do local especificado em sysmergeschemachange.