Adicionar e remover artigos de publicações existentes
Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure
Depois que uma publicação é criada, é possível adicionar e descartar artigos. Os artigos podem ser adicionados a qualquer hora, mas as ações necessárias para descartar artigos dependem do tipo de replicação e de quando o artigo é descartado.
adicionando artigos
Adicionar um artigo envolve: adicionar o artigo à publicação; criar um novo instantâneo para a publicação; sincronizar a assinatura para aplicar o esquema e os dados para o novo artigo.
Observação
Se você adicionar um artigo a uma publicação de mesclagem e o artigo existente depender do artigo novo, será preciso especificar uma ordem de processamento para ambos os artigos usando o parâmetro @processing_order de sp_addmergearticle e sp_changemergearticle. Considere o seguinte cenário: uma tabela é publicada, mas não é publicada a função que é referenciada pela tabela. Se a função não for publicada, a tabela não poderá ser criada no Assinante. Ao adicionar a função à publicação: especifique o valor 1 para o parâmetro @processing_order de sp_addmergearticlee especifique o valor 2 para o parâmetro @processing_order de sp_changemergearticle, especificando o nome da tabela para o parâmetro @article. Essa ordem de processamento garante a criação da função no Assinante antes da tabela que depende disso. É possível usar números diferentes para cada artigo, desde que o número para a função seja menor que o número para a tabela.
Adicione um ou mais artigos com um dos métodos seguintes:
Após adicionar um artigo a uma publicação, é necessário criar um novo instantâneo para a publicação (e todas as partições se for uma publicação de mesclagem com filtros com parâmetros). O Agente de Distribuição ou o Agente de Mesclagem então copiará o esquema e os dados para o novo artigo para o Assinante (ele não reinicializa a publicação inteira).
Para criar um novo instantâneo, consulte Create and Apply the Initial Snapshot.
Para criar um novo instantâneo para uma publicação de mesclagem com filtros com parâmetros, consulte Criar um instantâneo pra publicação de mesclagem com filtros com parâmetros.
Depois que o instantâneo é criado, sincronize a assinatura para copiar o esquema e os dados para o novo artigo.
Para sincronizar uma assinatura push, consulte Synchronize a Push Subscription.
Para sincronizar uma assinatura pull, consulte Synchronize a Pull Subscription.
descartando artigos
Os artigos podem ser descartados de uma publicação a qualquer hora, mas é necessário levar em conta os seguintes comportamentos:
Descartar um artigo de uma publicação não remove o objeto do banco de dados de publicação ou o objeto correspondente do banco de dados de assinatura. Use DROP <Object> para remover esses objetos, se necessário. Ao remover um artigo relacionado a outros artigos publicados por meio de restrições de chave estrangeira, recomendamos remover manualmente a tabela no Assinante ou usando uma execução de script sob demanda: especifique o script que inclua as instruções DROP <Object> apropriadas. Para obter mais informações, consulte Executar scripts durante a sincronização (Programação do Transact-SQL de Replicação).
Para publicações de mesclagem com nível de compatibilidade 90RTM ou superior, os artigos podem ser descartados a qualquer hora, porém um novo instantâneo é requerido. Além disso:
Se o artigo é um artigo pai em um filtro de junção ou relação de registro lógico, as relações devem ser descartadas primeiro, o que requer a reinicialização.
Se o artigo tiver o último filtro com parâmetros em uma publicação, as assinaturas deverão ser reinicializadas.
Para publicações de mesclagem com nível de compatibilidade inferior a 90RTM, os artigos podem ser descartados sem considerações especiais anteriores à sincronização inicial de assinaturas. Se o artigo for descartado depois que uma ou mais assinaturas forem sincronizadas, as assinaturas devem ser descartadas, recriadas e sincronizadas.
Para publicações de instantâneo ou publicações transacionais, os artigos podem ser descartados sem considerações especiais antes de as assinatura serem criadas. Se o artigo for descartado depois que uma ou mais assinaturas forem criadas, as assinaturas devem ser descartadas, recriadas e sincronizadas. Para obter mais informações sobre como remover assinaturas, consulte Assinar publicações e sp_dropsubscription (Transact-SQL). sp_dropsubscription permite a você remover um único artigo da assinatura, em vez da assinatura inteira.
Descartar um artigo de uma publicação envolve descartar o artigo e criar um novo instantâneo para a publicação. Descartar um artigo invalida o instantâneo atual; consequentemente, um novo instantâneo deve ser criado.
- Para remover um artigo de uma publicação, consulte Adicionar e remover artigos de uma publicação (SQL Server Management Studio) ou Excluir um artigo.
Após descartar um artigo de uma publicação, é necessário criar um novo instantâneo para a publicação (e todas as partições se for uma publicação de mesclagem com filtros com parâmetros).
Para criar um novo instantâneo, consulte Create and Apply the Initial Snapshot.
Para criar um novo instantâneo para uma publicação de mesclagem com filtros com parâmetros, consulte Criar um instantâneo pra publicação de mesclagem com filtros com parâmetros.
Como observado anteriormente, em alguns casos, descartar um artigo exige descartar assinaturas, recriá-las e, então, sincronizá-las. Para obter mais informações, consulte Assinar publicações e Sincronizar dados.
Observação
O SQL Server 2014 (12.x) Service Pack 2 ou superior e o SQL Server 2016 (13.x) Service Pack 1 ou superior dão suporte à remoção de tabelas com o comando DDL DROP TABLE para artigos que participam da Replicação Transacional. Se a publicação der suporte para DROP TABLE DDL, a operação de DROP TABLE removerá a tabela da publicação e do banco de dados. O agente do leitor de log lançará um comando de limpeza para o banco de dados de distribuição da tabela removida e fará a limpeza dos metadados do publicador. Se o leitor de log não tiver processado todos os registros de log que fazem referência à tabela removida, ele ignorará novos comandos associados à tabela removida. Registros já processados serão entregues ao banco de dados de distribuição. Eles poderão ser aplicados ao banco de dados do Assinante se o Agente de Distribuição processá-los antes que o Leitor de Log limpar os artigos obsoletos (removidos). A configuração padrão para todas as publicações de replicação transacional é não dar suporte ao DDL de DROP TABLE. O artigo KB 3170123 apresenta mais detalhes sobre essa melhoria.