Perguntas freqüentes para os administradores de replicação
As perguntas e as respostas a seguir fornecem orientação sobre várias tarefas enfrentadas pelos administradores de bancos de dados replicados.
Configurando 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 a produção de um instantâneo pode usar muitos recursos, portanto é melhor gerar instantâneos durante o período de pouca atividade no banco de dados (por padrão, um instantâneo é gerado quando o Assistente para Nova Publicação é concluído).
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 as publicações de mesclagem, o Snapshot Agent não requer nenhum bloqueio.
Para publicações transacionais, por padrão, o Snapshot Agent é bloqueado somente durante a fase inicial da geração de instantâneos.
Para publicações de instantâneos, o Snapshot Agent 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 Snapshot Agent 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. Apesar do banco de dados de assinatura estar acessível antes disso, o banco de dados não deve ser utilizado até o instantâneo ter 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 Snapshot Agent. Exiba o estado da geração do instantâneo na guia Agentes para uma publicação no Replication Monitor. Para obter mais informações, consulte Como exibir informações e executar tarefas para os agentes associados com uma publicação (Replication Monitor).
O instantâneo é aplicado pelo Distribution Agent ou pelo Merge Agent. Exiba o estado da aplicação do instantâneo na página Distribution Agent ou Merge Agent do Replication Monitor. Para obter mais informações, consulte Como exibir informações e executar tarefas para os agentes associados a uma assinatura (Replication Monitor).
O que acontece se o Snapshot Agent não concluir quando os Distribution ou Merge Agent são iniciados?
Nenhum erro ocorrerá se o Distribution Agent ou o Merge Agent executarem ao mesmo tempo em que o Snapshot Agent. Porém, você deve estar atento quanto ao seguinte:
Se o Distribution Agent ou o Merge Agent estiverem configurados para executar de modo contínuo, o agente aplica o instantâneo automaticamente, após a conclusão do Snapshot Agent.
Se o Distribution Agent ou o Merge Agent estiverem configurados para executar em uma programação ou sob demanda, e não há instantâneos disponíveis quando o agente for executar, o agente será fechado exibindo uma mensagem indicando que o instantâneo não está disponível. Você deverá executar o agente novamente para aplicar o instantâneo após o Snapshot Agent ter concluído. Para obter mais informações sobre os agentes em execução, consulte Como sincronizar uma assinatura push (SQL Server Management Studio), Como sincronizar uma assinatura pull (SQL Server Management Studio) e Conceitos dos executáveis do Replication Agent.
Devo efetuar o script de 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 a realização de script, consulte Replicação de script.
Que modelo de recuperação é requerido em um banco de dados replicado?
A replicação funciona corretamente seja qual for modelo de recuperação usado: simples, registrado em massa ou completo. A replicação de mesclagem rastreia a alteração armazenando as informações em tabelas de metadados. A replicação de transação rastreia as alterações marcando o log da transação, 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 de transação, 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 descartada da publicação, a coluna rowguid será removida; mas, se uma coluna existente foi usada para o rastreamento, ela não será 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 descartada da publicação, a coluna msrepl_tran_version não será removida.
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 mesclagem não requer nenhuma chave primária, mas se houver uma, ela deverá ser replicada. A replicação de instantâneos não requer nenhuma chave primária.
Por padrão, as restrições de chave primária, os índices e as restrições de verificações são replicados nos Assinantes.
A opção NOT FOR REPLICATION é especificada por padrão para as restrições de chave estrangeira e para as restrições de verificação; as restrições são impostas para operações de usuários mas não operações de agentes. Para obter mais informações, consulte Controlando restrições, identidades e gatilhos com NOT FOR REPLICATION.
Para obter informações sobre como definir as opções de esquema que controlam se as restrições são replicadas, consulte Como especificar opções de esquema (SQL Server Management Studio) e Como especificar opções de esquema (Programação Transact-SQL de replicação).
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 Colunas de identidade de replicação.
Os mesmos objetos podem ser publicados em publicações diferentes?
Sim, mas com algumas restrições. Para obter mais informações, consulte a seção "Publicando tabelas em mais de uma publicação" no tópico Publicando 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 o sp_adddistributiondb (Transact-SQL) para adicionar um banco de dados de distribuição. Para obter mais informações sobre como acessar a caixa de diálogo, consulte Como exibir e modificar as propriedades do distribuidor (SQL Server Management Studio).
Como posso localizar as informações sobre o Distribuidor e o Publicador, tal como os objetos em um banco de dados que podem ser publicados?
Essas informações estão disponíveis por meio do SQL Server Management Studioe dos vários procedimentos de replicação armazenados. Para obter mais informações, consulte Propriedades de replicação e Script de informações do Distribuidor e Publicador.
A replicação criptografa dados?
Não. A replicação não criptografa dados armazenados no banco de dados nem transferidos pela rede. Para obter mais informações, consulte a seção "Criptografia" do tópico Visão geral de segurança (Replicação).
Como posso replicar dados pela Internet?
Replique os dados pela Internet, por meio de:
Uma VPN (Virtual Private Network). Para obter mais informações, consulte Publicando dados pela Internet usando VPN.
Opção de sincronização da Web para replicação de mesclagem. Para obter mais informações, consulte Sincronização da Web para replicação de mesclagem.
Todos os tipos de replicação do Microsoft SQL Server podem replicar dados por uma VPN, no entanto, recomenda-se a sincronização da Web quando a replicação de mesclagem for utilizada.
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 estiver usando uma replicação de mesclagem em uma rede não confiável, tente usar os registros lógicos, isto garantirá que as alterações sejam processadas como uma unidade. Para obter mais informações, consulte Agrupando 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 em TCP/IP, ela usa a compressão fornecida pelo protocolo, mas não fornece nenhuma 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. Para obter mais informações sobre replicação em conexões de largura de banda baixa, consulte Uma rede lenta está causando problemas.
Propriedade de logons e de objetos
Os logons e as senhas são replicados?
Não. Você pode criar um pacote DTS para transferir os logons e as senhas do Publicador para um ou mais Assinantes. Para obter mais informações, consulte Projetando e implementando pacotes (Integration Services).
O que são os esquemas e como eles são replicados?
A começar pelo Microsoft SQL Server 2005, esquema tem dois significados:
A definição de um objeto, como uma instruçã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: <Banco de Dados>.<Esquema>.<Objeto>. Os esquemas são definidos usando a instrução CREATE SCHEMA. Para obter mais informações sobre os esquemas, consulte Esquemas (Mecanismo de Banco de Dados).
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. Caso não existam esquemas proprietários de objetos no Assinante, eles serão criados automaticamente.
Para artigos em publicação de mesclagem com um nível de compatibilidade inferior a 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 instantâneos de modo de caracteres (que são usados para Assinantes não-SQL Server e Assinantes SQL Server Compact 3.5 SP1): por padrão o proprietário é deixado em branco. O proprietário assume o padrão do proprietário associado à conta usada pelo Distribution Agent ou Merge Agent para conectar-se ao Assinante.
O proprietário do objeto pode ser alterado por meio da caixa de diálogo Propriedades de Artigo - <Artigo> e por meio dos seguintes procedimentos armazenados: sp_addarticle, sp_addmergearticle, sp_changearticle e sp_changemergearticle. Para obter mais informações, consulte Como exibir e modificar propriedades de Artigo e Publicação (SQL Server Management Studio), Como definir um artigo (Programação Transact-SQL de replicação) e Como exibir e modificar propriedades de artigos (Programação Transact-SQL de replicação).
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:
Execute as instruções GRANT diretamente no banco de dados de assinatura.
Use um script de pós-instantâneo para executar as instruções. Para obter mais informações, consulte Executando scripts antes ou depois que o instantâneo é aplicado.
Use o procedimento armazenado sp_addscriptexec para executar as instruções.
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, você deve:
Execute sp_changearticle ou sp_changemergearticle. Especifique um valor de 'pre_creation_cmd' (sp_changearticle) ou 'pre_creation_command' (sp_changemergearticle) para o parâmetro @property e um valor de 'nenhum', 'excluir' ou 'truncar' para o parâmetro @value.
Na caixa de diálogo Propriedades de 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 somente os dados que coincidirem com o filtro. ou Trunque todos os dados no objeto existente para a opção Acionar se o nome estiver em uso. Para obter mais informações sobre como acessar essa caixa de diálogo, consulte Como exibir e modificar propriedades de Artigo e Publicação (SQL Server Management Studio).
Manutenção do Banco de Dados
Por que não consigo executar TRUNCATE TABLE em uma tabela publicada?
TRUNCATE TABLE é uma operação não-registrada que não ativa os gatilhos. Isso não é permitido, pois a replicação não pode rastrear as alterações causadas pela operação: a replicação de transação rastreia as alterações por meio do log de transações; a replicação de mesclagem rastreia as alterações por meio de gatilhos, nas 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 de transação, 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. Para obter mais informações, consulte a seção "Inserção de dados em massa em tabelas publicadas" em Considerações sobre a replicação de mesclagem.
Existem algumas considerações para o backup e a restauração?
Sim. Existem várias considerações especiais para os bancos de dados envolvidos em replicação. Para obter mais informações, consulte Fazendo backup e restaurando bancos de dados replicados.
A replicação afeta o tamanho do log de transações?
A replicação de mesclagem e a replicação de instantâneos não afetam o tamanho do log de transações, mas uma replicação de transação sim. Se um banco de dados incluir uma ou mais publicações transacionais, o log não será truncado até que todas as transações pertinentes para as publicações sejam enviadas ao banco de dados de distribuição. Se o log de transações aumentar demasiadamente, e o Log Reader Agent 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 ele for definido para executar em modo contínuo (o padrão), garanta que ele esteja em execução. Para obter mais informações em como verificar o status do Log Reader Agent, consulteComo exibir informações e executar tarefas para os agentes associados com uma publicação (Replication Monitor).
Além disso, se você tiver definido a opção 'sync with 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é o backup de todas as transações ser feito. 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 obter mais informações sobre como fazer o backup e a restauração de bancos de dados envolvidos em uma replicação de transação, consulte Estratégias para fazer backup e restaurar o instantâneo e a 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 a replicação, exceto pelo seguinte: as chaves primárias são necessárias para as tabelas em publicações transacionais, portanto você não pode cancelar 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, ao adicionar ou alterar um índice no Publicador, por exemplo, deve-se fazer a mesma adição ou alteração no Assinante para que ele esteja refletido lá.
Como posso mover ou renomear arquivos para bancos de dados envolvidos em replicação?
Em versões do SQL Server anteriores ao SQL Server 2005, para mover ou renomear arquivos de banco de dados era necessário desanexar e tornar a anexar o banco de dados. Como um banco de dados replicado não pode ser desanexado, a replicação devia ser removida antes que os bancos de dados. A partir do SQL Server 2005, é 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 obter mais informações sobre como mover e renomear arquivos, consulte ALTER DATABASE (Transact-SQL).
Como posso descartar uma tabela que está sendo replicada?
Primeiro descarte o artigo da publicação usando sp_droparticle, sp_dropmergearticle ou a caixa de diálogo Propriedades da Publicação - <Publicação> e, em seguida, descarte-o do banco de dados usando DROP <Object>. Não é possível descartar artigos de publicações transacionais ou de instantâneos após as assinaturas terem sido adicionadas; primeiro, é preciso descartar as assinaturas. Para obter mais informações, consulte Adicionando artigos e descartando artigos 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, ao executar ALTER TABLE ... DROP COLUMN no Publicador, a instrução será replicada aos Assinantes e, em seguida, será executada para descartar a coluna. Os Assinantes executando versões do SQL Server anteriores ao SQL Server 2005 possuem suporte para a adição e descarte de colunas por meio dos procedimentos armazenados sp_repladdcolumn e sp_repldropcolumn. Para obter mais informações, consulte Fazendo alterações de esquema em bancos de dados de publicação.
Manutenção da 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 Validando os dados replicados. A validação não fornece qualquer informação sobre possíveis linhas sincronizadas incorretamente, mas a utilidade tablediff faz isso.
Como posso adicionar uma tabela a uma publicação existente?
Não é necessário interromper a atividade no banco de dados de publicação ou de assinatura para adicionar uma tabela (ou qualquer outro objeto). Adicione a tabela a uma publicação através da caixa de diálogo Propriedades da Publicação - <Publicação> ou por meio dos procedimentos armazenados sp_addarticle e sp_addmergearticle. Para obter mais informações, consulte Adicionando artigos e descartando artigos de publicações existentes.
Como posso remover uma tabela de uma publicação?
Remova uma tabela da publicação usando sp_droparticle, sp_dropmergearticle ou a caixa de diálogo Propriedades da Publicação - <Publicação>. Não é possível descartar artigos de publicações transacionais ou de instantâneos após as assinaturas terem sido adicionadas; antes é preciso descartar as assinaturas. Para obter mais informações, consulte Adicionando artigos e descartando artigos 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 Alterando a publicação e as propriedades do artigo.
Que ações fazem com que os instantâneos sejam invalidados?
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 Alterando a publicação e as propriedades do artigo.
Como posso remover a replicação?
As ações necessárias à remoção de replicação de banco de dados dependem se o banco de dados foi usado como um banco de dados de publicação, banco de dados de assinatura ou ambos. Para obter mais informações, consulte Removendo a replicação.
Como posso determinar se há transações ou linhas a serem replicadas?
Para a replicação de transação, use os procedimentos armazenados ou a guia Comandos não Distribuídos no Replication Monitor. Para obter mais informações, consulte Como exibir comandos replicados e outras informações no banco de dados de distribuição (Programação Transact-SQL de replicação) e Como exibir informações e executar tarefas para os agentes associados a uma assinatura (Replication Monitor).
Para replicação de mesclagem, use o procedimento armazenado sp_showpendingchanges. Para obter mais informações, consulte sp_showpendingchanges (Transact-SQL).
O Distribution Agent está muito lento? Devo reinicializar?
Use o procedimento armazenado sp_replmonitorsubscriptionpendingcmds ou a guia Comandos não Distribuídos no Replication Monitor. O procedimento armazenado e a guia exibem:
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 DDL (linguagem de definição de dados) Transact-SQL.
O tempo estimado para a entrega de comandos ao Assinante. Se esse valor for maior que a quantidade de tempo necessária para gerar e aplicar um instantâneo ao Assinante, considere reinicializar o Assinante. Para obter mais informações, consulte Reinicializando uma assinatura.
Para obter mais informações, consulte sp_replmonitorsubscriptionpendingcmds (Transact-SQL) e Como exibir informações e executar tarefas para os agentes associados a uma assinatura (Replication Monitor).
Replicação e demais recursos dos Bancos de Dados
A replicação trabalha junto com o envio de logs e espelhamento de banco de dados?
Sim. Para obter mais informações, consulte Replicação e envio de logs e Replicação e espelhamento do banco de dados.
A replicação trabalha junto com o uso de cluster?
Sim. Nenhuma consideração especial é exigida porque todos os dados são armazenados em um conjunto de discos no cluster.
Consulte também