AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 210022
Accepted
irimias
irimias
Asked: 2018-06-20 03:44:25 +0800 CST2018-06-20 03:44:25 +0800 CST 2018-06-20 03:44:25 +0800 CST

Como a tabela de assinantes foi atualizada durante a replicação de instantâneo?

  • 772

Estou testando um processo de replicação de instantâneo (SQLServer 2008 (sim, infelizmente...)).

Está tudo bem, mas não consigo encontrar na documentação do MS como as tabelas são atualizadas. Vi que o processo de publicação descarta as tabelas, depois as recria e as preenche com dados.

OK, fixe. Mas existe algum tipo de segurança (bloqueios, transações...) que impeça que seja feita uma consulta durante esta sincronização (em particular apenas entre a drop table e a create)?

Vamos imaginar um banco de dados A( publisher ) tendo uma tabela Treplicada em outro banco de dados B( subscriber ). Quando o agente de distribuição está em execução e a tabela Té atualizada no servidor B ( drop table T + create table T + bcp-in data ?), durante alguns milissegundos a tabela não estará lá. Se um aplicativo tentar ler table T, ele receberá um erro.

Quando tento iniciar um rastreamento no servidor Bquando o agente de distribuição está em execução, não consigo ver nenhuma transação feita para esta etapa. E, de fato, posso fazer uma seleção em uma tabela replicada Tno servidor B(e obter um erro).

É realmente assim que deve funcionar?

Existem configurações em algum lugar para evitar tal comportamento?

sql-server replication
  • 1 1 respostas
  • 1084 Views

1 respostas

  • Voted
  1. Best Answer
    SqlWorldWide
    2018-06-20T06:55:57+08:002018-06-20T06:55:57+08:00

    É realmente assim que deve funcionar?

    Sim, é assim que deve funcionar. Você só executa o instantâneo no início da configuração da replicação transacional. A menos que você esteja fora de sincronia devido a algum erro, você não precisa executar o snapshot novamente. Se você estiver executando SOMENTE a replicação de instantâneo, poderá controlar quando deseja ressincronizar todos os seus artigos e nada deve se conectar ao assinante enquanto o instantâneo estiver sendo aplicado.

    Dos livros online :

    A replicação de instantâneo é mais apropriada quando as alterações de dados são substanciais, mas pouco frequentes. Por exemplo, se uma organização de vendas mantém uma lista de preços de produtos e os preços são atualizados ao mesmo tempo uma ou duas vezes por ano, é recomendável replicar todo o instantâneo de dados após a alteração. Dados certos tipos de dados, instantâneos mais frequentes também podem ser apropriados. Por exemplo, se uma tabela relativamente pequena for atualizada no Publicador durante o dia, mas alguma latência for aceitável, as alterações poderão ser entregues todas as noites como um instantâneo.

    A replicação de instantâneo tem uma sobrecarga contínua menor no Publicador do que a replicação transacional, porque as alterações incrementais não são rastreadas. No entanto, se o conjunto de dados que está sendo replicado for muito grande, serão necessários recursos substanciais para gerar e aplicar o instantâneo. Considere o tamanho de todo o conjunto de dados e a frequência das alterações nos dados ao avaliar se deve utilizar a replicação de instantâneo.

    Quando uma assinatura está disponível; quando o banco de dados de assinatura pode ser usado?

    Uma assinatura fica disponível depois que o instantâneo é aplicado ao banco de dados de assinatura. Mesmo que 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âneos e do aplicativo.

    Existem configurações em algum lugar para evitar tal comportamento?

    Se você tem certeza de que seu esquema e dados já estão sincronizados ou deseja apenas que as alterações futuras sejam replicadas, você pode usar a opção a seguir para evitar o instantâneo. Eu usei isso muitas vezes durante a atualização com tempo de inatividade.

    @sync_type=replication support only

    Fornece geração automática no Assinante de procedimentos armazenados personalizados do artigo e gatilhos que dão suporte à atualização de assinaturas, se apropriado. Presume que o Assinante já possui o esquema e os dados iniciais das tabelas publicadas. Ao configurar uma topologia de replicação transacional ponto a ponto, certifique-se de que os dados em todos os nós na topologia sejam idênticos. Para obter mais informações, consulte Replicação transacional ponto a ponto.

    Não há suporte para assinaturas de publicações que não sejam do SQL Server.

    • 4

relate perguntas

  • Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve