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.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
Este artigo apresenta a replicação transacional para SQL Server. A replicação transacional normalmente começa com um instantâneo dos objetos e dados do banco de dados de publicação. Logo que é tirado o instantâneo inicial, as alterações de dados subsequentes e as modificações de esquema feitas no Editor geralmente são enviadas ao Assinante conforme ocorrem (quase em tempo real). As alterações de dados são aplicadas ao Subscritor na mesma ordem e dentro dos mesmos limites de transação que ocorreram na Editora; portanto, dentro de uma publicação, a consistência transacional é garantida.
Visão geral
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 os assinantes à medida que ocorrem.
O aplicativo requer baixa latência entre o momento em que as alterações são feitas no Editor 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), e não simplesmente à alteração de dados de rede para a linha.
O Editor tem um volume muito alto de atividades 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 de publicações transacionais devem ser tratados como somente leitura, porque as alterações não são propagadas de volta para o Editor. No entanto, a replicação transacional oferece opções que permitem atualizações no Subscritor.
Observação
A Instância Gerenciada SQL do Azure pode ser um editor, distribuidor e assinante para replicação de instantâneo e transacional. Os bancos de dados no Banco de Dados SQL do Azure só podem ser assinantes por push para replicação de instantâneo e transacional. Para obter mais informações, consulte Replicação transacional com o Banco de Dados SQL do Azure e a Instância Gerenciada SQL do Azure.
Configurar a criptografia TLS 1.3
O SQL Server 2025 (17.x) introduz o suporte TDS 8.0 para replicação transacional, que inclui:
- Configuração de agentes de replicação para usar encriptação TLS 1.3 entre instâncias do SQL Server 2025 (17.x) e também entre SQL Server 2025 (17.x) e Azure SQL Managed Instance.
- Encriptação padrão para comunicação entre servidores ligados de instâncias do SQL Server 2025 (17.x) numa topologia de replicação. Os servidores ligados no SQL Server 2025 (17.x) utilizam o driver OLE DB v19, que usa encriptação por defeito
Encrypt=Mandatory.
Observação
Para topologias de replicação com um distribuidor remoto:
Como funciona a replicação transacional
A replicação transacional é implementada pelo SQL Server Snapshot Agent, Log Reader Agent e Distribution Agent. O Snapshot Agent prepara arquivos de instantâneo contendo 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 para o banco de dados de distribuição, que atua como uma fila confiável de armazenamento e encaminhamento. O Agente de Distribuição copia os ficheiros de instantâneo iniciais da pasta de instantâneo e as transações mantidas nas tabelas do banco de dados de distribuição para os Assinantes.
As alterações incrementais feitas no Publicador são transmitidas aos Assinantes de acordo com a programação do Agente de Distribuição, que pode operar continuamente para latência mínima 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 em fila), os conflitos de atualização são evitados. Em última análise, todos os Subscritores alcançarão os mesmos valores que o Editor. Se forem usadas opções de atualização imediata ou atualização em fila com a replicação transacional, as atualizações poderão ser feitas no Assinante e, com a atualização em fila, poderão ocorrer conflitos.
A ilustração a seguir mostra os principais componentes da replicação transacional.
Conjunto de dados inicial
Antes de um novo Assinante de replicação transacional poder receber alterações incrementais de um Publicador, o Assinante deve conter tabelas com o mesmo esquema e dados que as tabelas do Publicador. 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 de outros meios, como o SQL Server Integration Services.
Quando os snapshots são distribuídos e aplicados aos Assinantes, somente os Assinantes que aguardam os snapshots iniciais são afetados. Outros assinantes dessa publicação (aqueles que já foram inicializados) não são afetados.
Processamento simultâneo de snapshots
A replicação por instantâneo coloca bloqueios partilhados em todas as tabelas publicadas como parte da replicação durante toda a geração do instantâneo. Isso pode impedir que atualizações sejam feitas nas tabelas de publicação. O processamento simultâneo de snapshots, o padrão com replicação transacional, não mantém os bloqueios de compartilhamento em vigor durante toda a geração de snapshot, o que permite que os usuários continuem trabalhando ininterruptamente enquanto a replicação cria arquivos de snapshot iniciais.
Agente de instantâneo
Os procedimentos pelos quais o Snapshot Agent implementa o snapshot inicial na replicação transacional são os mesmos procedimentos usados na replicação de snapshot (exceto conforme descrito anteriormente em relação ao processamento simultâneo de snapshots).
Depois que os arquivos de instantâneo tiverem sido gerados, você poderá visualizá-los na pasta de instantâneo usando o Microsoft Windows Explorer.
Modificação de Dados e do Log Reader Agent
O Log Reader Agent é executado no Distribuidor; ele normalmente é executado continuamente, mas também pode ser executado de acordo com um cronograma que você estabelecer. Durante a execução, o Log Reader Agent lê primeiro o log de transações de publicação (o mesmo log de banco de dados usado para rastreamento e recuperação de transações durante operações regulares do Mecanismo de Banco de Dados do SQL Server) e identifica quaisquer 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 Log Reader Agent usa o procedimento armazenado interno sp_replcmds para obter o próximo conjunto de comandos marcados para replicação a partir do log. 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 as 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 Log Reader Agent chama sp_repldone para marcar onde a replicação foi concluída pela última vez. Finalmente, o agente marca as linhas no log de transações que estão prontas para serem eliminadas. As linhas que ainda aguardam para serem replicadas não são eliminadas.
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 na Editora.
Agente de Distribuição
O Agente de Distribuição é executado no Distribuidor para as subscrições push e o Subscritor para as subscrições pull. O agente move as 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 Subscritor são de apenas leitura (a replicação transacional não impõe esta restrição no Subscritor). 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 para Nova Publicação, eles são criados selecionando Publicação transacional na página Tipo de Publicação . Para obter mais informações sobre como criar publicações, consulte Publicar dados e objetos de banco de dados. |
| Publicação transacional com assinaturas atualizáveis | As características deste tipo de publicação são: -Cada local tem dados idênticos, com um Editor e um Subscritor. -É possível atualizar linhas no Assinante -Esta topologia é mais adequada para ambientes de servidor que exigem alta disponibilidade e escalabilidade de leitura. Para obter mais informações, consulte Assinaturas atualizáveis. |
| Topologia ponto a ponto | As características deste tipo de publicação são: - Cada local tem dados idênticos e atua como Editor e Assinante. - A mesma linha pode ser alterada em apenas um local de cada vez. - Suporta deteção de conflitos - Esta 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 deste tipo de publicação são: A replicação bidirecional é semelhante à replicação ponto a ponto, no entanto, não fornece resolução de conflitos. Além disso, a replicação bidirecional é limitada a 2 servidores. Para obter mais informações, consulte Replicação transacional bidirecional |