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 / 44655
Accepted
Adel Khayata
Adel Khayata
Asked: 2013-06-17 22:58:29 +0800 CST2013-06-17 22:58:29 +0800 CST 2013-06-17 22:58:29 +0800 CST

Como limpar corretamente a configuração de replicação de mesclagem

  • 772

Qual é a maneira correta de limpar completamente a configuração da replicação de mesclagem?

Tentei excluir as assinaturas, excluir a publicação e, em seguida, "Desativar publicação e distribuição" e excluir o banco de dados de distribuição e, em seguida, comecei a configurar a replicação novamente.

infelizmente, depois disso descobri que a tabela dbo.msmergesubscriptions ainda contém registros antigos sobre assinaturas antigas que eu tinha antes de 2 anos !!

Existe alguma documentação oficial sobre como limpar corretamente e totalmente a configuração da replicação de mesclagem?

sql-server replication
  • 2 2 respostas
  • 9081 Views

2 respostas

  • Voted
  1. Brandon Williams
    2013-06-19T07:40:02+08:002013-06-19T07:40:02+08:00

    De alguma forma, você está acabando com metadados de replicação órfãos após excluir as assinaturas e/ou a publicação. Isso pode acontecer ao usar a GUI para descartar assinaturas e publicações. Em vez disso, tente usar procedimentos armazenados de replicação T-SQL para excluir as assinaturas e a publicação.

    Como: Excluir uma assinatura push (programação Transact-SQL de replicação)

    Como: Excluir uma assinatura pull (programação Transact-SQL de replicação)

    Como: Excluir uma publicação (Programação Transact-SQL de replicação)

    Depois de excluir as assinaturas e a publicação, verifique se os metadados de replicação foram removidos. Caso contrário, use sp_removedbreplication para remover todos os objetos de replicação dos bancos de dados.

    • 2
  2. Best Answer
    Kin Shah
    2013-06-19T09:24:39+08:002013-06-19T09:24:39+08:00

    A replicação de mesclagem é um pouco complicada de remover em comparação com a replicação transacional.

    Abaixo estão as etapas que sigo com sucesso para remover bits e peças de replicação de mesclagem obsoletos/restos:

    1. Faça backup dos bancos de dados replicados de mesclagem no editor e no(s) assinante(s) antes de prosseguir.
    2. Script de replicação de mesclagem do servidor publicador e armazene os scripts de criação/exclusão com segurança em outro local.
    3. Obtenha a lista de artigos publicados e seus acionadores existentes para referência na etapa posterior, executando a consulta abaixo no banco de dados replicado de mesclagem do editor e do assinante e armazenando o resultado em algum lugar por enquanto (ou seja, em um arquivo de texto)

      set nocount on 
      print 'get the list of published articles and its triggers' 
      select 
      p.name as publication_name, 
      o2.name as tbl_name, 
      o1.parent_obj , 
      o1.name as trigger_name, 
      left(o1.name, 3) as trigger_type, 
      o1.crdate as create_date 
      
      into #t 
      from sysobjects o1 
      join sysobjects o2 on o1.parent_obj = o2.id 
      join sysmergearticles a on o2.id = a.objid 
      join sysmergepublications p on a.pubid = p.pubid 
      where o1.xtype = 'TR' 
      and p.name = '' 
      order by p.name, o2.name, o1.name 
      
      select * from #t 
      
      print 'generate the drop statements for the replication triggers' 
      
      select 'drop trigger ['+trigger_name+']' 
      from #t 
      where trigger_type in ('ins','upd','del') 
      drop table #t 
      
    4. Elimine a replicação de mesclagem executando o script de exclusão gerado na etapa 1 do editor.

    5. Tanto no publicador quanto no(s) assinante(s), limpe todos os gatilhos que não foram removidos pelo script de exclusão de replicação executando o script de gatilho gerado na etapa 3.

    6. Tanto no publicador quanto no(s) assinante(s), verifique nas tabelas sysmergepublications, sysmergesubscriptionse sysmergearticlesse as entradas para a replicação de mesclagem ainda existem. Em caso afirmativo , execute o seguinte script para remover as entradas de sysmergearticles e sysmergepublications

      Observação: você também pode excluir quaisquer entradas em sysmergearticles que não sejam mais referenciadas por entradas em sysmergepublictaions/sysmergesubscriptions, mas tenha muito cuidado ao fazer isso

         -- delete the obsolete entries from sysmergearticles on the publisher side 
      
         delete from sysmergearticles 
         where pubid in ( select p.pubid 
         from sysmergepublications p 
         where p.name = '' 
         ) 
         -- delete the obsolete entries from sysmergearticles on the subscriber side 
         delete from sysmergearticles 
         where pubid in ( select p.pubid 
         from sysmergesubscriptions p 
         where p.publication = '' 
         ) 
         -- delete the obsolete entries from sysmergepublications 
         delete from sysmergepublications 
         where name = '' 
          -- delete the obsolete entries from sysmergesubscriptions 
          delete from sysmergesubscriptions 
          where publication = ''
      
    7. Se não houver outra replicação de mesclagem configurada neste banco de dados, você também pode truncar as tabelas MSmerge* nos bancos de dados do publicador/assinante.

    Seguir as etapas acima garantirá que a replicação MERGE seja removida de forma limpa - nenhum vestígio deixado para trás!

    Observação: tenho usado o método acima em meu ambiente atual sem problemas. Mas, por favor, teste isso com antecedência ... como é óbvio .. se algo estiver errado, não culpe este site e eu :-)

    • 1

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

    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

    Conceder acesso a todas as tabelas para um usuário

    • 5 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
    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
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +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