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 / 33028
Accepted
DamagedGoods
DamagedGoods
Asked: 2013-01-17 07:02:44 +0800 CST2013-01-17 07:02:44 +0800 CST 2013-01-17 07:02:44 +0800 CST

O instantâneo não seleciona novos artigos na replicação de transação do SQL Server 2012 quando adicionado por meio de script

  • 772

Estou tentando adicionar novos artigos a uma publicação existente no SQL Server 2012.

Estou adicionando o artigo à publicação com a sintaxe

--add the table into the correct publication
sp_addarticle @publication='<publicationname>', @article='CardBookingType_tbl', @source_object='CardBookingType_tbl'

Anteriormente, no SQL Server 2008, eu costumava usar a seguinte sintaxe para assinar apenas 1 tabela e, em seguida, executar o instantâneo. Isso não funciona mais no SQL 2012, pois você precisa assinar todos os artigos.

--add the table into the subscription
EXEC sp_addsubscription
        @publication = '<publicationname>',
        @subscriber = '<Servername>',
        @destination_db = '<dbname>'

GO

No SQL Server 2012, se eu adicionar a tabela por meio da GUI e, em seguida, executar o agente de instantâneo, ele selecionará a nova tabela. Mas se eu adicionar por meio do script, ele aparecerá no gui, mas o instantâneo relata que nenhum novo item foi detectado.

Parece que estou perdendo um pedaço de código para sinalizar os assinantes como faltando um artigo?

sql-server-2012 snapshot
  • 3 3 respostas
  • 3593 Views

3 respostas

  • Voted
  1. SQLGuyChuck
    2016-03-01T13:17:11+08:002016-03-01T13:17:11+08:00

    Talvez a ideia de Brandon aqui ajude: Como adicionar um artigo à replicação existente

    Resumo de suas sugestões para corrigir:

    1. execute sp_refreshsubscriptions para assinaturas pull
    2. ou nas assinaturas push use o sp_addsubscription como você mencionou (funcionou para mim)

    Escrevi algum código para ajudar a identificar os "artigos órfãos no assinante":

    --Run from distributor
    SELECT  pub.data_source AS Publisher ,
            a.Publisher_db ,
            p.Publication ,
            sub.data_source AS Subscriber ,
            s.Subscriber_db ,
            a.Article
    FROM   distribution.dbo.MSarticles as a
    LEFT JOIN distribution.dbo.MSpublications AS p ON a.publisher_id = p.publisher_id AND a.publication_id = p.publication_id
    JOIN sys.servers AS pub ON p.publisher_id = pub.server_id
    LEFT JOIN distribution.dbo.MSsubscriptions AS s ON a.publisher_id = s.publisher_id AND a.publication_id = s.publication_id AND a.article_id = s.article_id
    LEFT JOIN sys.servers AS sub ON s.subscriber_id = sub.server_id
    WHERE s.subscriber_db IS NULL --Leave off for great documentation, but this will show the "orphaned" subscribers effected by this issue.
    
    • 1
  2. Best Answer
    DamagedGoods
    2013-03-08T07:39:43+08:002013-03-08T07:39:43+08:00

    Já experimentei isso várias vezes, onde adicionei um novo artigo a uma publicação existente, adicionei uma assinatura de todos os assinantes e, em seguida, executei o agente instantâneo em meu distribuidor remoto.

    Às vezes, o instantâneo não é detectado por nenhum assinante, às vezes por uma seleção aparentemente aleatória de assinantes! Não testemunhei nenhum padrão (tenho 6 e parece acontecer em qualquer um deles de vez em quando).

    Não descobri a causa raiz, mas o remédio é simples, se não frustrante. Eliminar as assinaturas dos assinantes que não detectaram o novo instantâneo e adicionar novamente a assinatura antes de executar o instantâneo pela segunda vez resolveu o problema.

    • 0
  3. Arinjay
    2017-04-26T05:40:34+08:002017-04-26T05:40:34+08:00

    Eu enfrentei um problema semelhante. Se você criar um script com os detalhes do assinante, poderá encontrá-los. Se você encontrar sp_addsubscription em parameters. Se você encontrar addsubscription apenas para artigos específicos, precisará modificar o parâmetro Articles como 'all'. Em seguida, elimine essa assinatura e recrie com o script modificado e reinicie. Vai funcionar.

    • -1

relate perguntas

  • Relatório ADDM dba_hist_snapshot

  • Qual é a melhor maneira de criar automaticamente um instantâneo da tabela em determinado momento?

  • Por que as sequências Denali devem ter um desempenho melhor do que as colunas de identidade?

  • O SQL Server não deveria oferecer suporte a RANGE?

  • O que é SQL Server "Denali"? O que há de novo?

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