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.
As perguntas e respostas a seguir fornecem diretrizes sobre uma variedade de 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 em um banco de dados enquanto uma publicação está sendo criada. Lembre-se de que a produção de um instantâneo pode ser intensiva em recursos, portanto, é melhor gerar instantâneos durante períodos de atividade inferior no banco de dados (por padrão, um instantâneo é gerado quando você conclui o Assistente de Nova Publicação).
As tabelas são bloqueadas durante a geração de snapshots?
O tempo durante o qual os bloqueios são mantidos depende do tipo de replicação utilizado.
Para publicações de mesclagem, o Snapshot Agent não usa bloqueios.
Para publicações transacionais, por padrão, o Snapshot Agent usa bloqueios somente durante a fase inicial da geração de instantâneos.
Para publicações de instantâneo, o Snapshot Agent usa bloqueios durante todo o processo de geração de instantâneo.
Como os bloqueios impedem que outros usuários atualizem as tabelas, o Snapshot Agent deve ser agendado para ser executado durante períodos de atividade inferior no banco de dados, especialmente para publicações de instantâneo.
Quando uma assinatura está disponível; quando o banco de dados de assinatura pode ser usado?
Uma assinatura está disponível depois que o instantâneo é aplicado ao banco de dados de assinatura. Embora o banco de dados de assinatura esteja acessível antes disso, o banco de dados não deve ser usado até que o instantâneo tenha sido aplicado. Use o Replication Monitor para verificar o status da geração de instantâneo e do aplicativo:
O instantâneo é gerado pelo Agente de Instantâneo. Verifique o status da geração de instantâneos na guia Agentes para uma publicação no Replication Monitor. Para obter mais informações, consulte Exibir informações e executar tarefas usando o Replication Monitor.
O snapshot é aplicado pelo Agente de Distribuição ou pelo Agente de Mesclagem. Exiba o status do aplicativo de instantâneo na página Agente de Distribuição ou Agente de Mesclagem do Replication Monitor.
O que acontece se o Snapshot Agent não estiver concluído quando o Agente de Distribuição ou Mesclagem for iniciado?
Isso não causará um erro se o Agente de Distribuição ou o Agente de Mesclagem for executado ao mesmo tempo que o Agente de Instantâneo. No entanto, você deve estar ciente do seguinte:
Se o Agente de Distribuição ou o Agente de Mesclagem estiver configurado para ser executado continuamente, o agente aplicará o snapshot automaticamente após o Agente do Snapshot concluir.
Se o Agente de Distribuição ou o Agente de Mesclagem estiver configurado para ser executado em um agendamento ou sob demanda e não houver nenhum instantâneo disponível quando o agente for executado, o agente será encerrado com uma mensagem indicando que um instantâneo ainda não está disponível. Você deve executar o agente novamente para aplicar o instantâneo após a conclusão do Snapshot Agent. Para obter mais informações sobre como executar agentes, consulte Sincronizar uma assinatura push, sincronizar uma assinatura pull e conceitos de executáveis do Replication Agent.
Devo criar um script para minha configuração de replicação?
Sim. O script da configuração de replicação é uma parte fundamental de qualquer plano de recuperação de desastre para uma topologia de replicação. Para obter mais informações sobre scripts, consulte Replicação de Scripts.
Qual modelo de recuperação é necessário em um banco de dados replicado?
As funções de replicação usam corretamente qualquer um dos modelos de recuperação: simples, bulk-logged ou full. A replicação de mesclagem rastreia as alterações armazenando informações em tabelas de metadados. A replicação transacional rastreia as alterações marcando o log 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 a tabelas replicadas; ela será removida se a tabela não for publicada?
Para acompanhar as alterações, a replicação de mesclagem e a replicação transacional com assinaturas de atualização em fila devem ser capazes de identificar exclusivamente cada linha em cada tabela publicada. Para realizar isso:
A replicação de mesclagem adiciona a coluna rowguid a cada tabela, a menos que a tabela já possua uma coluna do tipo de dados uniqueidentifier com a propriedade ROWGUIDCOL definida (nesse caso, essa coluna é usada). Se a tabela for removida da publicação, a coluna rowguid será removida; se uma coluna existente tiver sido usada para acompanhamento, a coluna não será removida.
Se uma publicação transacional der suporte a assinaturas com atualização em fila, a replicação adiciona a coluna msrepl_tran_version a cada tabela. Se a tabela for removida da publicação, a coluna msrepl_tran_version não será removida.
Um filtro não deve incluir o
rowguidcolusado por replicação para identificar linhas. Por padrão, essa é a coluna adicionada no momento em que você configura a replicação de mesclagem e é nomeada rowguid.
Como faço para gerenciar restrições em tabelas publicadas?
Há uma série de problemas a serem considerados em relação a 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 uma chave primária, mas, se houver uma, ela deverá ser replicada. A replicação de instantâneo não requer uma chave primária.
Por padrão, restrições de chave primária, índices e restrições de verificação são replicadas para 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 informações sobre como definir as opções de esquema que controlam se as restrições são replicadas, consulte Especificar Opções de Esquema.
Como faço para gerenciar colunas de identidade?
A replicação fornece gerenciamento automático de intervalo de identidades para topologias de replicação que incluem atualizações no Assinante. Para mais informações, consulte Colunas de Identidade Replicadas.
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 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á restrições 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 banco de dados de distribuição.
Se você tiver várias publicações, poderá configurar vários bancos de dados de distribuição no Distribuidor para garantir que os dados que fluem por 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 (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 Exibir e Modificar Propriedades do Distribuidor e do Publicador.
Como encontrar 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 uma série de procedimentos armazenados de replicação. Para obter mais informações, consulte o Script de Informações do Distribuidor e do Publicador.
A replicação criptografa dados?
Não. A replicação não criptografa dados armazenados no banco de dados ou transferidos pela rede. Para obter mais informações, consulte a seção "Criptografia" do tópico SEGURANÇA de Replicação do SQL Server.
Como fazer para replicar dados pela Internet?
Replicar dados pela Internet usando:
Uma VPN (Rede Virtual Privada). Para obter mais informações, consulte Publicar Dados pela Internet usando VPN.
A 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 em uma VPN, mas você deve considerar a sincronização pela Web se estiver usando a replicação de mescla.
A replicação será retomada se uma conexão for interrompida.
Sim. O processamento de replicação é retomado no ponto em que parou se uma conexão for interrompida. Se você estiver usando a replicação de mesclagem em uma rede não confiável, considere o uso de registros lógicos, o que garante que as alterações relacionadas sejam processadas como uma unidade. Para obter mais informações, consulte Alterações de grupo em linhas relacionadas com registros lógicos.
A replicação funciona em conexões de baixa largura de banda? Ele usa compactação?
Sim, a replicação funciona em conexões de baixa largura de banda. Para conexões por TCP/IP, ele usa a compactação fornecida pelo protocolo, mas não fornece compactação adicional. Para conexões de sincronização da Web via HTTPS, ele usa a compactação fornecida pelo protocolo e também a compactação adicional dos arquivos XML usados para replicar alterações.
Logons e propriedade do objeto
Logons e senhas são replicados?
Não. Você pode criar um pacote DTS para transferir logons e senhas de um Publicador para um ou mais Assinantes.
O que são esquemas e como eles são replicados?
A partir do Microsoft SQL Server 2005, o esquema tem dois significados:
A definição de um objeto, como um comando CREATE TABLE. Por padrão, o processo de replicação copia as definições de todos os objetos replicados para o Assinante.
O namespace no qual um objeto é criado: <Banco de dados>.<>Esquema.<Objeto>. 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 aos esquemas e à propriedade do objeto:
Para artigos em publicações de mesclagem com um nível de compatibilidade igual a 90 ou superior, publicações de instantâneo e publicações transacionais: por padrão, o proprietário do objeto no Assinante é o mesmo que o proprietário do objeto correspondente no Publicador. Se os esquemas proprietários de objetos não existirem no banco de dados do Assinante, eles serão criados automaticamente.
Para artigos em publicações 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 do modo de caractere (que são usados para Assinantes não SQL Server e Assinantes Compactos do SQL Server): por padrão, o proprietário fica em branco. O proprietário usa como padrão o 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 por meio 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 propriedades de publicação, definir um artigo e exibir e modificar propriedades do artigo.
Como as concessões no banco de dados de assinatura podem ser configuradas para corresponder a 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 você quiser que as permissões no banco de dados de assinatura correspondam às do banco de dados de publicação, use um dos seguintes métodos:
Execute comandos GRANT diretamente no banco de dados de assinatura.
Utilize um script pós-instantâneo para executar os comandos. Para obter mais informações, consulte Executar scripts antes e depois de o instantâneo ser aplicado.
Use o procedimento armazenado sp_addscriptexec para executar as instruções.
O que acontece com as permissões concedidas em um banco de dados de assinatura se uma assinatura for reinicializada?
Por padrão, os objetos no Assinante são descartados e recriados quando uma assinatura é reinicializada, o que faz com que todas as permissões concedidas para esses objetos sejam descartadas. Há duas maneiras de lidar com isso:
Reaplicar 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 é reinicializada. Antes da reinicialização, ou:
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 '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 o objeto existente inalterado, Excluir dados. Se o artigo tiver um filtro de linha, exclua apenas os dados que correspondem ao filtro. ou Trunque todos os dados no objeto existente para a opção Ação se o nome estiver em uso. Para obter mais informações sobre como acessar essa caixa de diálogo, consulte Exibir e modificar propriedades de publicação.
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 em log que não dispara os gatilhos. Isso não é permitido porque a replicação não pode controlar as alterações causadas pela operação: a replicação transacional rastreia as alterações por meio do log de transações; A replicação de mesclagem rastreia as alterações por meio de gatilhos em tabelas publicadas.
Qual é o efeito da execução de um comando de inserção em massa em um banco de dados replicado?
Para replicação transacional, as inserções em massa são rastreadas e replicadas da mesma forma que outras inserções. Para a replicação de mesclagem, você deve garantir que os metadados de controle de alterações sejam atualizados corretamente.
Há alguma consideração de replicação para backup e restauração?
Sim. Há várias considerações especiais para bancos de dados envolvidos na replicação. Para obter mais informações, consulte Fazer Backup e Restaurar Bases de Dados Replicadas.
A replicação afeta o tamanho do log de transações?
A replicação de mesclagem e a replicação de instantâneo não afetam o tamanho do log de transações, mas a replicação transacional pode. Se um banco de dados incluir uma ou mais publicações transacionais, o log não será truncado até que todas as transações relevantes para as publicações sejam entregues ao banco de dados de distribuição. Se o log de transações estiver crescendo excessivamente e o Agente de Leitor de Log estiver sendo executado de forma programada, considere reduzir o intervalo entre as rodadas. Ou defina-o para ser executado no modo contínuo. Se ele estiver definido para ser executado no modo contínuo (o padrão), verifique se ele está em execução. Para obter mais informações sobre como verificar o status do Agente de Leitor de Log, consulte Exibir Informações e Executar Tarefas usando o Replication Monitor.
Além disso, se você tiver definido 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 feito backup. Se o log de transações estiver crescendo muito grande e você tiver essa opção definida, considere reduzir o intervalo entre backups de log de transações. Para mais informações sobre como fazer backup e restaurar bancos de dados envolvidos na replicação transacional, consulte Estratégias para Backup e Restauração de Replicação Instantânea e Transacional.
Como recompilar índices ou tabelas em bancos de dados replicados?
Há uma variedade de mecanismos para recompilar índices. Todos eles podem ser usados sem considerações especiais para replicação, com a seguinte exceção: chaves primárias são necessárias em tabelas em publicações transacionais, portanto, você não pode descartar e recriar chaves primárias nessas tabelas.
Como fazer para adicionar ou alterar índices em bancos de dados de publicação e assinatura?
Os índices podem ser adicionados ao Publicador ou aos Assinantes sem considerações especiais para 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, por exemplo, no Publicador, deverá fazer a mesma adição ou alteração no Assinante para que isso seja refletido lá.
Como mover ou renomear arquivos para bancos de dados envolvidos na replicação?
Em versões do SQL Server anteriores ao SQL Server 2005, mover ou renomear arquivos de banco de dados exigia desanexar e reanexar o banco de dados. Como um banco de dados replicado não pode ser desanexado, a replicação teve que ser removida desses bancos de dados primeiro. A partir do SQL Server 2005, você pode mover ou renomear arquivos sem desanexar e anexar novamente o banco de dados, sem nenhum efeito sobre a replicação. Para obter mais informações sobre como mover e renomear arquivos, consulte ALTER DATABASE (Transact-SQL).
Como faço para soltar 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 da Publicação – <Publicação> e solte-o do banco de dados usando DROP <Object>. Você não pode excluir artigos de publicações de instantâneo ou transacionais após a adição de assinaturas; você deve excluir as assinaturas primeiro. Para obter mais informações, consulte Adicionar artigos e remover artigos de publicações existentes.
Como fazer para adicionar ou soltar colunas em uma tabela publicada?
O SQL Server dá suporte a uma ampla variedade de alterações de esquema em objetos publicados, incluindo adição e remoção de colunas. Por exemplo, execute ALTER TABLE... DROP COLUMN no Publicador, e a instrução é replicada para os Assinantes e então executada para excluir a coluna. Os assinantes que executam versões do SQL Server antes do SQL Server 2005 dão suporte à adição e remoçã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 determinar se os dados nos Assinantes são sincronizados com dados no Publicador?
Use a validação. A validação informa se um determinado Assinante é sincronizado com o Publicador. Para obter mais informações, consulte Validar Dados Replicados. A validação não fornece informações sobre quais linhas se alguma não estiver sincronizada corretamente, mas o utilitário tablediff o faz.
Como fazer para adicionar uma tabela a uma publicação existente?
Não é necessário interromper a atividade nos bancos de dados de publicação ou assinatura para adicionar uma tabela (ou outro objeto). Adicione uma tabela a uma publicação por meio da caixa de diálogo Propriedades da Publicação – <Publicação> ou dos procedimentos armazenados sp_addarticle e sp_addmergearticle. Para obter mais informações, consulte Adicionar artigos e remover artigos de publicações existentes.
Como 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> . Você não pode remover artigos de publicações de instantâneo ou transacionais após a adição de assinaturas; você deve remover as assinaturas primeiro. Para obter mais informações, consulte Adicionar artigos e remover artigos de publicações existentes.
Quais ações exigem que as assinaturas sejam reinicializadas?
Há várias alterações de artigo e publicação que exigem que as assinaturas sejam reinicializadas. Para obter mais informações, consulte Alterar publicação e propriedades do artigo.
Quais ações fazem com que os instantâneos sejam invalidados?
Existem várias alterações em artigos e publicações que invalidam instantâneos e exigem a geração de um novo instantâneo. Para obter mais informações, consulte Alterar publicação e propriedades do artigo.
Como remover a replicação?
As ações necessárias para remover a replicação de um banco de dados dependem se o banco de dados serviu como banco de dados de publicação, banco de dados de assinatura ou ambos.
Como determinar se há transações ou linhas a serem replicadas?
Para replicação transacional, use procedimentos armazenados ou a guia Comandos Não Atribuídos no Replication Monitor. Para obter mais informações, consulte Visualizar Comandos Replicados e Outras Informações no Banco de Dados de Distribuição (Replicação Transact-SQL Programação) e Visualizar Informações e executar tarefas usando o Replication Monitor.
Para replicação de mesclagem, use o procedimento armazenado sp_showpendingchanges. Para obter mais informações, consulte sp_showpendingchanges (Transact-SQL).
Qual é o atraso do Agente de Distribuição? Devo reinicializar?
Use o procedimento armazenado sp_replmonitorsubscriptionpendingcmds ou a guia Comandos Não Atribuídos no Replication Monitor. 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) Transact-SQL ou uma instrução DDL (linguagem de definição de dados).
A quantidade estimada de tempo para entregar comandos ao Assinante. Se esse valor for maior do que o tempo necessário para gerar e aplicar um instantâneo ao Assinante, considere reinicializar o Assinante. Para obter mais informações, consulte Reinicializar as assinaturas.
Para obter mais informações, consulte sp_replmonitorsubscriptionpendingcmds (Transact-SQL) e Exibir Informações e Executar Tarefas Usando o Replication Monitor.
Replicação e outros recursos de banco de dados
A replicação funciona em conjunto com o transporte de logs e o espelhamento de dados?
Sim. Para obter mais informações, consulte Envio e Replicação de Logs (SQL Server) e Espelhamento e Replicação de Banco de Dados (SQL Server).
A replicação funciona em conjunto com o clustering?
Sim. Nenhuma consideração especial é necessária porque todos os dados são armazenados em um conjunto de discos no cluster.
Consulte Também
Perguntas Frequentes sobre Administração de Replicação
Práticas recomendadas para administração de replicação