Perguntas frequentes para administradores de replicação

Aplica-se a:SQL ServerInstância Gerenciada de SQL do Azure

As perguntas e as respostas a seguir fornecem orientação sobre várias tarefas enfrentadas pelos administradores de bancos de dados replicados.

Configurar a replicação

A atividade precisa ser interrompida em um banco de dados quando é publicada?

Não. A atividade pode continuar no banco de dados enquanto a publicação está sendo criada. Esteja ciente de que produzir um snapshot pode ser muito consome recursos, então é melhor gerar snapshots durante períodos de menor atividade no banco de dados (por padrão, um snapshot é gerado quando você completa o New Publication Wizard).

As tabelas são bloqueadas durante a geração de instantâneos?

O tempo dos bloqueios efetuados depende do tipo de replicação usado:

  • Para publicações de mesclagem, o Agente de Instantâneo não aplica nenhum bloqueio.

  • Para publicações transacionais, por padrão, o Agente de Instantâneo aplica bloqueios somente durante a fase inicial da geração do instantâneo.

  • Para publicações de instantâneos, o Agente de Instantâneo não é bloqueado durante todo o processo de geração de instantâneos.

Como os bloqueios impedem que outros usuários atualizem as tabelas, o Agente de Instantâneo deverá ser programado para executar durante os períodos de pouca atividade, especialmente para as publicações de instantâneos.

Quando uma assinatura estará disponível e quando o banco de dados de assinatura poderá ser usado?

Uma assinatura está disponível após o instantâneo ter sido aplicado ao banco de dados de assinatura. Mesmo que o banco de dados por assinatura já esteja acessível antes disso, o banco de dados não deve ser usado até que o snapshot tenha sido aplicado. Use o Replication Monitor para verificar o estado da geração e a aplicação do instantâneo:

  • O instantâneo é gerado pelo Agente de Instantâneo. Exiba o estado da geração do instantâneo na guia Agentes para uma publicação no Replication Monitor. Saiba mais em Exibir informações e executar tarefas usando o Replication Monitor.

  • O instantâneo é aplicado pelo Agente de Distribuição ou pelo Agente de Mesclagem. Exiba o estado da aplicação do instantâneo na página Agente de Distribuição ou Agente de Mesclagem do Replication Monitor. Saiba mais em Exibir informações e executar tarefas usando o Replication Monitor.

O que acontece se o Agente de Instantâneo não estiver concluído quando o Distribution ou o Agente de Mesclagem começarem?

Nenhum erro ocorrerá se o Agente de Distribuição ou o Agente de Mesclagem executarem ao mesmo tempo em que o Agente de Instantâneo. Porém, você deve estar atento quanto ao seguinte:

  • Se o Agente de Distribuição ou o Agente de Mesclagem estiverem configurados para executar de modo contínuo, o agente aplica o instantâneo automaticamente, após a conclusão do Agente de Instantâneo.

  • Se o Agente de Distribuição ou Agente de Mesclagem estiver configurado para rodar em um cronograma ou sob demanda, e não houver snapshot disponível quando o agente for executado, o agente será desligado com uma mensagem informando que um snapshot ainda não está disponível. Você deverá executar o agente novamente para aplicar o instantâneo após o Agente de Instantâneo ter concluído. Para mais informações sobre a execução de agentes, consulte Sincronizar uma assinatura Push, Sincronizar uma assinatura Pull e Conceitos dos executáveis do agente de replicação.

Devo escrever um script para minha configuração de replicação?

Sim. A realização do script da configuração da replicação é peça fundamental em qualquer plano de recuperação de desastres abrangendo uma topologia de replicação. Para obter mais informações sobre scripting, consulte Scripting Replication.

Que modelo de recuperação é requerido em um banco de dados replicado?

A replicação funciona corretamente usando qualquer um dos modelos de recuperação: básico, logado em massa ou completo. A replicação de mesclagem rastreia a alteração armazenando as informações em tabelas de metadados. A replicação transacional acompanha as mudanças marcando o registro de transações, mas esse processo de marcação não é afetado pelo modelo de recuperação.

Por que a replicação adiciona uma coluna às tabelas replicadas, essa coluna será removida se a tabela não for publicada?

Para rastrear as alterações, a replicação de mesclagem e a replicação transacional, com assinaturas de atualização em fila, devem poder identificar exclusivamente cada linha em cada tabela publicada. Para realizar isso:

  • A replicação de mesclarem adiciona a coluna rowguid a cada tabela, a menos que a tabela já tenha uma coluna de dados do tipo uniqueidentifier com a propriedade ROWGUIDCOL definida (neste caso esta coluna será usada). Se a tabela for retirada da publicação, a coluna rowguid é removida; Se uma coluna existente foi usada para rastreamento, ela não é removida.

  • Se uma publicação transacional tem suporte para assinaturas de atualização em fila, a replicação adicionará a coluna msrepl_tran_version a todas as tabelas. Se a tabela for retirada da publicação, a coluna msrepl_tran_version não é removida.

  • Um filtro não deve incluir o rowguidcol usado pela replicação para identificar linhas. Por padrão, esta é a coluna adicionada no momento que você define a replicação de mesclagem e é denominada rowguid.

Como administrar as restrições em tabelas publicadas?

Há vários assuntos para serem considerados com relação à restrições em tabelas publicadas:

  • A replicação transacional requer uma restrição de chave primária em cada tabela publicada. A replicação de merge não requer uma chave primária, mas se houver uma presente, ela deve ser replicada. A replicação de snapshots não requer uma chave primária.

  • Por padrão, as restrições de chave primária, os índices e as restrições de verificação são replicados aos Assinantes.

  • A NOT FOR REPLICATION opção é especificada por padrão para restrições de chave estrangeira e restrições de verificação; as restrições são aplicadas para operações do usuário, mas não para operações de agente.

Para informações sobre como definir as opções de esquema que controlam se as restrições são replicadas, veja Especificar Opções de Esquema para replicação do SQL Server.

Como gerenciar as colunas de identidade?

A replicação fornece um gerenciamento automático do intervalo de identidade para as topologias de replicação que incluem atualizações no Assinante. Para obter mais informações, consulte Replicar colunas de identidade.

Os mesmos objetos podem ser publicados em publicações diferentes?

Sim, mas com algumas restrições. Para mais informações, consulte a seção “Publicando tabelas em mais de uma publicação” no tópico Publicar dados e objetos de banco de dados.

Várias publicações podem usar o mesmo banco de dados de distribuição?

Sim. Não há nenhuma restrição sobre o número ou tipos de publicações que podem usar o mesmo banco de dados de distribuição. Todas as publicações de um determinado Publicador devem usar o mesmo Distribuidor e o mesmo banco de dados de distribuição.

Se há várias publicações, você pode configurar vários bancos de dados de distribuição no Distribuidor para certificar-se de que os dados fluindo em cada banco de dados de distribuição sejam de uma única publicação. Use a caixa de diálogo Propriedades do Distribuidor ou sp_adddistributiondb para adicionar um banco de dados de distribuição. Para mais informações sobre como acessar essa caixa de diálogo, consulte Exibir e modificar as propriedades do Distribuidor e do Publicador.

Como posso localizar as informações sobre o Distribuidor e o Publicador, como quais objetos em um banco de dados são publicados?

Essas informações estão disponíveis por meio do SQL Server Management Studio e de vários procedimentos armazenados de replicação. Para obter mais informações, consulte Distributor and Publisher Information Script.

A replicação criptografa dados?

Não. A replicação não criptografa dados que estão armazenados no banco de dados ou transferidos pela rede. Para mais informações, veja a seção "Criptografia" do tópico Visualizar e Modificar Configurações de Segurança de Replicação.

Como posso replicar dados pela Internet?

Replique os dados pela Internet, por meio de:

Todos os tipos de replicação do Microsoft SQL Server podem replicar dados por meio de uma VPN, mas você deve considerar a sincronização pela Web se estiver usando replicação de mesclagem.

A replicação será retomada se uma conexão for cancelada

Sim. O processamento de replicação é retomado no ponto em que ele foi interrompido quando a conexão foi cancelada. Se você está usando replicação de merge em uma rede não confiável, considere usar registros lógicos, que garantem que as alterações relacionadas sejam processadas como uma unidade. Para obter mais informações, consulte Agrupar alterações a linhas relacionadas com registros lógicos.

A replicação trabalha em conexões de largura de banda baixa? Ela usa a compressão?

Sim, a replicação trabalha em conexões de largura de banda baixa Para conexões via TCP/IP, ele usa a compressão fornecida pelo protocolo, mas não fornece compressão adicional. Em conexões de sincronização da Web em HTTPS, ela usa a compressão fornecida pelo protocolo e também a compressão adicional dos arquivos XML usados para replicar as alterações.

Poderei configurar a replicação se eu me conectar ao servidor usando o endereço IP?

Não, a replicação funciona somente quando você usa o nome real do servidor. Começando com o SSMS (SQL Server Management Studio) 18.0 (e versões posteriores), a replicação pode ser configurada usando o nome real do servidor e o número da porta.

Logins e propriedade de objetos

Os logons e as senhas são replicados?

Não. Você pode criar um pacote SSIS para transferir os logons e as senhas do Publicador para um ou mais Assinantes.

O que são os esquemas e como eles são replicados?

A partir do Microsoft SQL Server 2005 (9.x), o esquema tem dois significados:

  • A definição de um objeto, como uma declaração CREATE TABLE. Por padrão, a replicação copia as definições de todos os objetos replicados para o Assinante.

  • O namespace dentro do qual um objeto é criado: <Database>.<Schema>.<Object>. Os esquemas são definidos usando a instrução CREATE SCHEMA.

  • A replicação tem o seguinte comportamento padrão no Assistente para Nova Publicação em relação à propriedade de esquemas e objetos:

  • Para artigos em publicações de mesclagem com um nível de compatibilidade 90 ou superior, publicações de instantâneos e publicações transacionais: por padrão, o proprietário do objeto no Assinante é igual ao proprietário do objeto correspondente no Publicador. Se os esquemas que contêm objetos não existirem no Assinante, eles serão criados automaticamente.

  • Para artigos em publicação de mesclagem com um nível de compatibilidade abaixo de 90: por padrão, o proprietário é deixado em branco e especificado como dbo durante a criação do objeto no Assinante.

  • Para artigos em publicações Oracle: por padrão, o proprietário é especificado como dbo.

  • Para artigos em publicações que usam snapshots de modo de caractere (que são usados para não assinantes do SQL Server e assinantes do SQL Server Compact): por padrão, o proprietário é deixado em branco. O proprietário assume o padrão do proprietário associado à conta usada pelo Agente de Distribuição ou Agente de Mesclagem para se conectar ao Assinante.

O proprietário do objeto pode ser alterado através da caixa de diálogo Propriedades do Artigo - <Artigo> e pelos seguintes procedimentos armazenados: sp_addarticle, sp_addmergearticle, sp_changearticle, e sp_changemergearticle. Para obter mais informações, consulte Exibir e modificar as propriedades da publicação, Definir um artigo e Exibir e modificar as propriedades do artigo.

Como as concessões no banco de dados de assinatura podem ser configuradas para corresponder às concessões no banco de dados de publicação?

Por padrão, a replicação não executa instruções GRANT no banco de dados de assinatura. Se quiser que as permissões no banco de dados de assinatura correspondam àquelas no banco de dados de publicação, use um dos seguintes métodos:

O que acontece às permissões concedidas em um banco de dados de assinatura se uma assinatura for reinicializada?

Por padrão, os objetos no Assinante são cancelados e criados novamente quando uma assinatura é reinicializada, isto que faz com que todas as permissões concedidas para aqueles objetos sejam canceladas. Há dois modos para controlar isto:

  • Aplique novamente as concessões após a reinicialização, usando as técnicas descritas na seção anterior.

  • Especifique que os objetos não devem ser descartados quando a assinatura for reinicializada. Antes da reinicialização, faça uma das seguintes opções:

    • Execute sp_changearticle ou sp_changemergearticle. Especifique um valor igual a 'pre_creation_cmd' (sp_changearticle) ou 'pre_creation_command' (sp_changemergearticle) para o parâmetro @property e um valor igual a 'none', 'delete' ou 'truncate' para o parâmetro @value.

    • Na caixa de diálogo Propriedades do artigo - <Artigo>, na seção Objeto de destino, selecione um valor de Manter objeto existente inalterado, Excluir dados. Se o artigo tiver um filtro de linha, exclua apenas os dados que correspondem ao filtro. ou Truncar todos os dados no objeto existente para a opção Ação se o nome estiver em uso. Para mais informações sobre como acessar essa caixa de diálogo, consulte Exibir e modificar propriedades de publicação.

Manutenção de banco de dados

Por que não posso executar TRUNCATE TABLE em uma tabela publicada?

TRUNCATE TABLE é uma instrução DDL que não registra eliminações individuais de linhas e não aciona gatilhos DML. Não é permitido porque a replicação não pode rastrear as mudanças causadas pela operação: a replicação transacional acompanha as mudanças pelo log de transações; a replicação de fusão acompanha as mudanças por meio de gatilhos DML em tabelas publicadas.

Qual é o efeito de se executar um comando de inserção em massa em um banco de dados replicado?

Para a replicação transacional, as inserções em massa são rastreadas e replicadas como as demais inserções. Para a replicação de mesclagem, você deve certificar-se de que os metadados de rastreamento de alterações estejam corretamente atualizados.

Existem algumas considerações de replicação para backup e restauração?

Sim. Existem várias considerações especiais para os bancos de dados envolvidos em replicação. Para obter mais informações, veja Fazer backup e restaurar bancos de dados replicados.

A replicação afeta o tamanho do log de transações?

A replicação mesclada e a replicação por instantâneo não afetam o tamanho do log de transação, mas a replicação transacional pode. Se um banco de dados incluir uma ou mais publicações transacionais, o registro não é truncado até que todas as transações relevantes para as publicações tenham sido entregues ao banco de dados de distribuição. Se o log de transações aumentar demasiadamente, e o Agente de Leitor de Log estiver em execução com agendamento definido, considere encurtar o intervalo entre as execuções. Ou, defina-o para executar em modo contínuo. Se estiver configurado para rodar em modo contínuo (o padrão), certifique-se de que está rodando. Para obter mais informações sobre como verificar o status do agente de leitor de Log, confira Exibir informações e executar tarefas usando o Replication Monitor.

Além disso, se você definiu a opção 'sincronizar com backup' no banco de dados de publicação ou no banco de dados de distribuição, o log de transações não será truncado até que todas as transações tenham tido backup. Se o log de transações crescer demasiadamente, e você tiver essa opção definida, considere encurtar o intervalo entre os backups do log de transações. Para mais informações sobre backup e restauração de bancos de dados envolvidos na replicação transacional, consulte Estratégias de backup e restauração de instantâneo e replicação transacional.

Como posso reconstruir índices ou tabelas em bancos de dados replicados?

Há vários mecanismos para reconstruir índices. Todos podem ser usados sem considerações especiais para replicação, com a seguinte exceção: chaves primárias são exigidas em tabelas em publicações transacionais, então você não pode eliminar e recriar chaves primárias nessas tabelas.

Como posso adicionar ou alterar índices em bancos de dados de publicação e de assinatura?

Índices podem ser adicionados no Publicador ou nos Assinantes sem considerações especiais para a replicação (lembre-se de que os índices podem afetar o desempenho). CREATE INDEX e ALTER INDEX não são replicados, portanto, se você adicionar ou alterar um índice no Publicador, por exemplo, precisará fazer a mesma adição ou alteração no Assinante se quiser que isso também seja refletido nele.

Como posso mover ou renomear arquivos para bancos de dados envolvidos em replicação?

Nas versões do SQL Server anteriores ao SQL Server 2005 (9.x), mover ou renomear arquivos de banco de dados exigia desanexar e anexar novamente o banco de dados. Como um banco de dados replicado não pode ser desanexado, a replicação precisou ser removida desses bancos de dados primeiro. A partir do SQL Server 2005 (9.x), é possível mover ou renomear arquivos sem desanexar e anexar novamente o banco de dados, e não produzir efeito sobre a replicação. Para mais informações sobre mover e renomear arquivos, veja ALTER DATABASE.

Como excluir uma tabela que está sendo replicada?

Primeiro, remova o artigo da publicação usando sp_droparticle, sp_dropmergearticle ou a caixa de diálogo Propriedades de Publicação – <Publicação>, em seguida, remova-o do banco de dados usando DROP <Object>. Você não pode remover artigos de publicações snapshot ou transacionais depois que as assinaturas tiverem sido adicionadas; você deve remover as assinaturas primeiro. Para obter mais informações, consulte Add Articles to and Drop Articles from Existing Publications (Adicionar e remover artigos para/de publicações existentes).

Como posso adicionar ou descartar colunas em uma tabela publicada?

O SQL Server dá suporte a uma grande variedade de alterações de esquema em objetos publicados, inclusive a adição e o descarte de colunas. Por exemplo, execute ALTER TABLE ... DROP COLUMN no Publicador e a instrução será replicada para os Assinantes, em seguida, será executada para descartar a coluna. Os assinantes que executam versões do SQL Server anteriores ao SQL Server 2005 (9.x) oferecem suporte para a adição e a exclusão de colunas por meio dos procedimentos armazenados sp_repladdcolumn e sp_repldropcolumn. Para obter mais informações, consulte Make Schema Changes on Publication Databases (Fazer alterações de esquema em bancos de dados de publicação).

Manutenção de replicação

Como posso determinar se os dados no Assinante estão sincronizados com os dados no Publicador?

Use a validação. A validação informa se um determinado Assinante está sincronizado com o Publicador. Para obter mais informações, consulte Validar os dados replicados. A validação não fornece informações sobre quais linhas, se houver, não estão sincronizadas corretamente, mas a ferramenta tablediff sim.

Como posso adicionar uma tabela a uma publicação existente?

Não é necessário interromper a atividade nos bancos de dados de publicações ou assinaturas para adicionar uma tabela (ou outro objeto). Adicione uma tabela a uma publicação com a caixa de diálogo Propriedades de Publicação – <Publicação> ou os procedimentos armazenados sp_addarticle e sp_addmergearticle. Para obter mais informações, consulte Add Articles to and Drop Articles from Existing Publications (Adicionar e remover artigos para/de publicações existentes).

Como posso remover uma tabela de uma publicação?

Remova a tabela da publicação usando sp_droparticle, sp_dropmergearticle ou a caixa de diálogo Propriedades de Publicação – <Publicação>. Você não pode remover artigos de publicações snapshot ou transacionais depois que as assinaturas forem adicionadas; você deve remover as assinaturas primeiro. Para obter mais informações, consulte Add Articles to and Drop Articles from Existing Publications (Adicionar e remover artigos para/de publicações existentes).

Que ações exigem que as assinaturas sejam reinicializadas?

Há várias alterações em artigos e publicações que exigem a reinicialização das assinaturas. Para obter mais informações, consulte Alterar propriedade da publicação e do artigo.

Que ações invalidam os instantâneos?

Há várias alterações em artigos e publicações que invalidam os instantâneos e exigem a geração de um novo instantâneo. Para obter mais informações, consulte Alterar propriedade da publicação e do artigo.

Como posso remover a replicação?

As ações necessárias para remover a replicação de um banco de dados dependem de ele ter servido como banco de dados de publicação, de assinatura, ou ambos.

Como posso determinar se há transações ou linhas a serem replicadas?

Para a replicação transacional, use os procedimentos armazenados ou a guia Comandos não Distribuídos no Replication Monitor. Para mais informações, veja Visualizar Comandos Replicados e Informações no Banco de Dados de Distribuição e Visualizar informações e executar tarefas usando o Monitor de Replicação.

Para replicação de mesclagem, use o procedimento armazenado sp_showpendingchanges. Para mais informações, veja sp_showpendingchanges.

Qual é o atraso do Agente de Distribuição? Devo reinicializar?

Use o sp_replmonitorsubscriptionpendingcmds procedimento armazenado ou a aba Comandos não distribuídos no Monitor de Replicação. O procedimento armazenado e a exibição da aba:

  • O número de comandos no banco de dados de distribuição que não foram entregues ao assinante selecionado. Um comando consiste em uma instrução DML (linguagem de manipulação de dados) ou uma instrução DDL (linguagem de definição de dados) Transact-SQL.

  • A quantidade de tempo estimada para entrega de comandos ao Assinante. Se esse valor for maior do que a quantidade de tempo requerida para gerar e aplicar um instantâneo ao Assinante, considere reiniciar o Assinante. Para obter mais informações, consulte Reinicializar as assinaturas.

Para mais informações, veja sp_replmonitorsubscriptionpendingcmds e Exibir informações e executar tarefas usando o Monitor de Replicação.

Replicação e outros recursos de banco de dados

A replicação funciona em conjunto com o envio de logs e o espelhamento de banco de dados?

A replicação funciona em conjunto com a clusterização?

Sim. Nenhuma consideração especial é exigida porque todos os dados são armazenados em um conjunto de discos no cluster.

Como faço para solucionar problemas de uma solução de terceiros baseada na replicação de SQL?

Recomendamos entrar em contato com o fornecedor terceiro em caso de problemas para receber suporte. Em geral, se o problema for isolado pelo fornecedor como sendo um problema de replicação do núcleo que é fornecido com o SQL Server, o Suporte da Microsoft será envolvido para prestar assistência adicional.