Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A replicação transacional normalmente começa com um instantâneo dos objetos e dados do banco de dados de publicação. Assim que o instantâneo inicial é tirado, as alterações de dados subsequentes e as modificações de esquema feitas no Publicador geralmente são entregues ao Assinante conforme ocorrem (quase em tempo real). As alterações de dados são aplicadas ao Assinante na mesma ordem e dentro dos mesmos limites de transação que ocorreram no Publicador; portanto, em uma publicação, a consistência transacional é garantida.
A replicação transacional normalmente é usada em ambientes de servidor para servidor e é apropriada em cada um dos seguintes casos:
- Você deseja que as alterações incrementais sejam propagadas para Assinantes conforme elas ocorrem.
- O aplicativo requer baixa latência entre o tempo em que as alterações são feitas no Publicador e as alterações chegam ao Assinante.
- O aplicativo requer acesso a estados de dados intermediários. Por exemplo, se uma linha for alterada cinco vezes, a replicação transacional permitirá que um aplicativo responda a cada alteração (como disparar um gatilho), não apenas a alteração líquida dos dados na linha de dados.
- O Publicador tem um volume muito alto de atividade de inserção, atualização e exclusão.
- O Publicador ou Assinante é um banco de dados não SQL Server, como o Oracle.
Por padrão, os Assinantes para publicações transacionais devem ser tratados como somente leitura, pois as alterações não são propagadas de volta para o Publicador. No entanto, a replicação transacional oferece opções que permitem atualizações pelo Subscritor.
Como funciona a replicação transacional
A replicação transacional é implementada pelo SQL Server Snapshot Agent, pelo Log Reader Agent e pelo Distribution Agent. O Snapshot Agent prepara arquivos de instantâneo que contêm esquema e dados de tabelas publicadas e objetos de banco de dados, armazena os arquivos na pasta de instantâneo e registra trabalhos de sincronização no banco de dados de distribuição no Distribuidor.
O Log Reader Agent monitora o log de transações de cada banco de dados configurado para replicação transacional e copia as transações marcadas para replicação do log de transações no banco de dados de distribuição, que atua como uma fila confiável de armazenamento e encaminhamento. O Agente de Distribuição copia os arquivos de instantâneo iniciais da pasta de instantâneo e as transações mantidas nas tabelas de banco de dados de distribuição para Subscritores.
Alterações incrementais feitas pelo Publicador fluem para os Assinantes de acordo com a programação do Agente de Distribuição, que pode ser executada continuamente para minimizar a latência ou em intervalos agendados. Como as alterações nos dados devem ser feitas no Publicador (quando a replicação transacional é usada sem atualização imediata ou opções de atualização na fila), os conflitos de atualização são evitados. Por fim, todos os Assinantes alcançarão os mesmos valores que o Publicador. Se as opções de atualização imediata ou de atualização na fila forem usadas com replicação transacional, as atualizações poderão ser feitas no Assinante e, com a atualização na fila, podem ocorrer conflitos.
A ilustração a seguir mostra os principais componentes da replicação transacional.
Conjunto de dados inicial
Antes que um novo Assinante de replicação transacional possa receber alterações incrementais de um Publicante, o Assinante deve conter tabelas com o mesmo esquema e dados que as tabelas do Publicante. O conjunto de dados inicial normalmente é um instantâneo criado pelo Agente de Instantâneo e distribuído e aplicado pelo Agente de Distribuição. O conjunto de dados inicial também pode ser fornecido por meio de um backup ou outros meios, como o SQL Server Integration Services.
Quando os instantâneos são distribuídos e aplicados aos Assinantes, somente os Assinantes que estão esperando por instantâneos iniciais são afetados. Outros Assinantes dessa publicação (aqueles que já foram inicializados) não são afetados.
Processamento simultâneo de instantâneos
A replicação de instantâneo coloca bloqueios compartilhados em todas as tabelas publicadas como parte da replicação durante a geração de instantâneos. Isso pode impedir que as atualizações sejam feitas nas tabelas de publicação. O processamento de instantâneo simultâneo, o padrão com replicação transacional, não mantém os bloqueios de compartilhamento em vigor durante toda a geração de instantâneo, o que permite que os usuários continuem trabalhando ininterruptamente enquanto a replicação cria arquivos de instantâneo iniciais.
Agente de Captura de Instantâneo
Os procedimentos pelos quais o Snapshot Agent implementa o instantâneo inicial na replicação transacional são os mesmos procedimentos usados na replicação de instantâneo (exceto conforme descrito acima em relação ao processamento de instantâneo simultâneo).
Depois que os arquivos de instantâneo forem gerados, você poderá exibi-los na pasta de instantâneo usando o Microsoft Windows Explorer.
Modificação de Dados e do Agente Leitor de Logs
O Agente de Leitor de Log é executado no Distribuidor; ele normalmente é executado continuamente, mas também pode ser executado conforme um cronograma que você estabelece. Ao executar, o Agente de Leitor de Log lê primeiro o log de transações de publicação (o mesmo log de banco de dados usado para acompanhamento e recuperação de transações durante operações regulares do Mecanismo de Banco de Dados do SQL Server) e identifica as instruções INSERT, UPDATE e DELETE ou outras modificações feitas nos dados em transações que foram marcadas para replicação. Em seguida, o agente copia essas transações em lotes para o banco de dados de distribuição no Distribuidor. O Agente de Leitor de Log usa o procedimento armazenado interno sp_replcmds para obter o próximo conjunto de comandos marcados para replicação a partir do log. Em seguida, o banco de dados de distribuição se torna a fila de armazenamento e encaminhamento a partir da qual as alterações são enviadas aos Assinantes. Somente transações confirmadas são enviadas para o banco de dados de distribuição.
Depois que todo o lote de transações tiver sido gravado com êxito no banco de dados de distribuição, ele será confirmado. Após a confirmação de cada lote de comandos para o Distribuidor, o Agente de Leitor de Log chama sp_repldone para marcar onde a replicação foi concluída pela última vez. Por fim, o agente marca as entradas no log de transações que estão prontas para exclusão. As linhas que ainda estão esperando para serem replicadas não são descartadas.
Os comandos de transação são armazenados no banco de dados de distribuição até que sejam propagados para todos os Assinantes ou até que o período máximo de retenção de distribuição seja atingido. Os assinantes recebem transações na mesma ordem em que foram aplicadas no Publicador.
Agente de Distribuição
O Distribution Agent é executado no Distribuidor para assinaturas push e no Assinante para assinaturas pull. O agente move transações do banco de dados de distribuição para o Assinante. Se uma assinatura estiver marcada para validação, o Agente de Distribuição também verificará se os dados no Publicador e no Assinante correspondem.
Tipos de publicação
A replicação transacional oferece quatro tipos de publicação:
| Tipo de publicação | Descrição |
|---|---|
| Publicação transacional padrão | Apropriado para topologias nas quais todos os dados no Assinante são somente leitura (a replicação transacional não impõe isso no Assinante). As publicações transacionais padrão são criadas por padrão ao usar Transact-SQL ou RMO (Replication Management Objects). Ao usar o Assistente de Nova Publicação, eles são criados selecionando a publicação transacional na página Tipo de Publicação . Para obter mais informações sobre como criar publicações, veja Publicar dados e objetos de banco de dados. |
| Publicação transacional com assinaturas atualizáveis | As características desse tipo de publicação são: - Cada local tem dados idênticos, com um Publicador e um Assinante. – É possível atualizar linhas no Assinante - Essa topologia é mais adequada para ambientes de servidor que exigem alta disponibilidade e escalabilidade de leitura. Para obter mais informações, consulte As Assinaturas Atualizáveis. |
| Topologia ponto a ponto | As características desse tipo de publicação são: - Cada local tem dados idênticos e atua como Publicador e Assinante. - A mesma linha só pode ser alterada em um local de cada vez. – Dá suporte à detecção de conflitos - Essa topologia é mais adequada para ambientes de servidor que exigem alta disponibilidade e escalabilidade de leitura. Para obter mais informações, consulte Replicação Transacional Ponto a Ponto. |
| Replicação transacional bidirecional | As características desse tipo de publicação são: A replicação bidirecional é semelhante à replicação ponto a ponto, no entanto, ela não fornece resolução de conflitos. Além disso, a replicação bidirecional é limitada a dois servidores. Para obter mais informações, consulte Replicação Transacional Bidirecional |