Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Azure SQL Managed Instance
Depois de uma publicação ser criada, é possível adicionar e eliminar artigos. Os artigos podem ser adicionados a qualquer momento, mas as ações necessárias para eliminar artigos dependem do tipo de replicação e de quando o artigo é retirado.
Adição de Artigos
Adicionar um artigo implica: adicionar o artigo à publicação; criar um novo instantâneo para a publicação; sincronizar a subscrição para aplicar o esquema e os dados do novo artigo.
Note
Se adicionar um artigo a uma publicação de fusão e um artigo existente depender do novo artigo, deve especificar uma ordem de processamento para ambos os artigos usando o parâmetro @processing_ordersp_addmergearticle e sp_changemergearticle. Considere o seguinte cenário: publica uma tabela mas não publica uma função que a tabela referencia. Se não publicar a função, a tabela não pode ser criada pelo Assinante. Ao adicionar a função à publicação: especifique um valor de 1 para o parâmetro @processing_orderde sp_addmergearticle; e especificar um valor de 2 para o parâmetro @processing_orderde sp_changemergearticle, especificando o nome da tabela para o parâmetro @article. Esta ordem de processamento assegura que cria a função no Assinante antes da tabela que dela depende. Pode usar números diferentes para cada artigo, desde que o número da função seja inferior ao número da tabela.
Adicione um ou mais artigos através de um dos seguintes métodos:
Após adicionar um artigo a uma publicação, deve criar um novo snapshot para a publicação (e para todas as partições se for uma publicação de fusão com filtros parametrizados). O Distribution Agent ou Merge Agent copia então o esquema e os dados do novo artigo para o Assinante (não reinicializa toda a publicação).
Para criar um novo snapshot, consulte Criar e Aplicar o snapshot inicial.
Para criar um novo snapshot para uma publicação de fusão com filtros parametrizados, veja Criar um snapshot para uma Publicação de Fusão com Filtros Parameterizados.
Após a criação do snapshot, sincronize a subscrição para copiar o esquema e os dados do novo artigo.
Para sincronizar uma subscrição push, veja Sincronizar uma subscrição push.
Para sincronizar uma subscrição de pull, veja Sincronizar uma subscrição de pull.
Eliminação de Artigos
Os artigos podem ser retirados de uma publicação a qualquer momento, mas deve ter em conta os seguintes comportamentos:
Eliminar um artigo de uma publicação não remove o objeto da base de dados da publicação nem o objeto correspondente da base de dados por subscrição. Use o DROP <Object> para remover estes objetos, se necessário. Quando eliminar um artigo relacionado com outros artigos publicados por restrições de chave estrangeira, recomendamos que elimine a tabela no Subscritor manualmente ou utilizando a execução de scripts a pedido: especifique um script que inclua as instruções DROP <objeto> adequadas. Para mais informações, consulte Executar Scripts durante a Sincronização (Programação Transact-SQL de Replicação).
Para publicações de fusão com um nível de compatibilidade de 90RTM ou superior, os artigos podem ser retirados a qualquer momento, mas é necessário um novo snapshot. Additionally:
Se um artigo for um artigo principal num filtro de junção ou numa relação de registo lógico, as relações devem ser removidas primeiro, o que requer uma reinicialização.
Se um artigo tiver o último filtro parametrizado numa publicação, as subscrições devem ser reiniciadas.
Para publicações de fusão com um nível de compatibilidade inferior a 90RTM, os artigos podem ser retirados sem considerações especiais antes da sincronização inicial das subscrições. Se um artigo for cancelado após uma ou mais subscrições serem sincronizadas, as subscrições devem ser canceladas, recriadas e sincronizadas.
Para publicações instantâneas ou transacionais, os artigos podem ser retirados sem considerações especiais antes da criação das subscrições. Se um artigo for cancelado após a criação de uma ou mais subscrições, as subscrições devem ser canceladas, recriadas e sincronizadas. Para mais informações sobre a cancelação de subscrições, consulte Subscrever Publicações e sp_dropsubscription (Transact-SQL). sp_dropsubscription permite retirar um único artigo da subscrição em vez de toda a subscrição.
Remover um artigo de uma publicação consiste em remover o artigo e criar um novo instantâneo para a publicação. Remover um artigo invalida a captura atual; por isso, tem de ser criada uma nova captura.
- Para eliminar um artigo de uma publicação, consulte Adicionar Artigos e Eliminar Artigos de uma Publicação (SQL Server Management Studio) ou Eliminar um Artigo.
Depois de remover um artigo de uma publicação, tem de criar um novo snapshot da publicação (e de todas as partições, se se tratar de uma publicação de intercalação com filtros parametrizados).
Para criar um novo snapshot, consulte Criar e Aplicar o snapshot inicial.
Para criar um novo snapshot para uma publicação de fusão com filtros parametrizados, veja Criar um snapshot para uma Publicação de Fusão com Filtros Parameterizados.
Como referido acima, em alguns casos, eliminar um artigo exige que as subscrições sejam canceladas, recriadas e depois sincronizadas. Para mais informações, consulte Subscrever Publicações e Sincronizar Dados.
Note
O SQL Server 2014 (12.x) Service Pack 2 ou superior e o SQL Server 2016 (13.x) Service Pack 1 ou superior suportam a eliminação de uma tabela usando DROP TABLE o comando DDL para artigos que participam na Replicação Transacional. Se uma DROP TABLE DDL for suportada pela(s) publicação(ões), então a operação DROP TABLE eliminará a tabela da publicação e da base de dados. O agente leitor de registos publicará um comando de limpeza para a base de dados de distribuição da tabela descartada e fará a limpeza dos metadados do publisher. Se o leitor de logs não tiver processado todos os registos de log relativos à tabela eliminada, então ignorará os novos comandos associados à tabela eliminada. Os registos já processados serão entregues à base de dados de distribuição. Podem ser aplicadas na base de dados de assinantes se o Distribution Agent as processar antes de o Log Reader limpar o(s) artigo(s) obsoleto (eliminado). A configuração padrão para todas as publicações de replicação transacional consiste em não suportar DROP TABLE DDL. KB 3170123 tem mais detalhes sobre esta melhoria.