Como exibir e modificar propriedades de artigos (Programação Transact-SQL de replicação)

É possível modificar artigos e retornar suas propriedades programaticamente usando procedimentos armazenados de replicação. Os procedimentos armazenados usados dependem do tipo de publicação ao qual o artigo pertence.

Para exibir as propriedades de um artigo que pertence a um instantâneo ou publicação transacional

  1. Execute sp_helparticle, especificando o nome da publicação para o parâmetro @publication e o nome do artigo para o parâmetro @article. Se você não especificar @article, serão retornadas informações de todos os artigos na publicação.

  2. Execute sp_helparticlecolumns para que os artigos de tabela listem todas as colunas disponíveis na tabela base.

Para modificar as propriedades de um artigo que pertence a um instantâneo ou publicação transacional

  • Execute sp_changearticle, especificando a propriedade do artigo que está sendo alterado no parâmetro @property e o novo valor desta propriedade no parâmetro @value.

    ObservaçãoObservação

    Se a alteração exigir a geração de um novo instantâneo, deve-se também especificar um valor 1 para @force_invalidate_snapshot, e se a alteração exigir que os Assinantes sejam reinicializados, deve-se também especificar um valor 1 para @force_reinit_subscription. Para obter mais informações sobre as propriedades que, quando alteradas, exigem um instantâneo novo ou reinicialização, consulte Alterando a publicação e as propriedades do artigo.

Para exibir as propriedades de um artigo que pertence a uma publicação de mesclagem

  1. Execute sp_helpmergearticle, especificando o nome da publicação para o parâmetro @publication e o nome do artigo para o parâmetro @article. Se você não especificar esses parâmetros, serão retornadas informações de todos os artigos em uma publicação ou no publicador.

  2. Execute sp_helpmergearticlecolumn para que os artigos de tabela listem todas as colunas disponíveis na tabela base.

Para modificar as propriedades de um artigo que pertence a uma publicação de mesclagem

  • Execute sp_changemergearticle, especificando a propriedade de artigo que está sendo alterada no parâmetro @property e o novo valor dessa propriedade no parâmetro @value.

    ObservaçãoObservação

    Se a alteração exigir a geração de um novo instantâneo, deve-se também especificar um valor 1 para @force_invalidate_snapshot, e se a alteração exigir que os Assinantes sejam reinicializados, deve-se também especificar um valor 1 para @force_reinit_subscription. Para obter mais informações sobre as propriedades que, quando alteradas, exigem um instantâneo novo ou reinicialização, consulte Alterando a publicação e as propriedades do artigo.

Exemplo

Esse exemplo de replicação transacional retorna as propriedades do artigo publicado.

DECLARE @publication AS sysname;
SET @publication = N'AdvWorksProductTran';

USE [AdventureWorks]
EXEC sp_helparticle
  @publication = @publication;
GO

Esse exemplo de replicação transacional altera as opções de esquema para o artigo publicado.

DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @option AS int;
SET @publication = N'AdvWorksProductTran';
SET @article = N'Product';
SET @option = (SELECT CAST(0x0000000002030073 AS int));

-- Change the schema options to replicate schema with XML.
USE [AdventureWorks]
EXEC sp_changearticle 
  @publication = @publication,
  @article = @article, 
  @property = N'schema_option', 
  @value = @option,
  @force_invalidate_snapshot = 1;
GO

Esse exemplo de replicação de mesclagem retorna as propriedades do artigo publicado.

DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';

USE [AdventureWorks]
EXEC sp_helpmergearticle
  @publication = @publication;
GO

Esse exemplo de replicação de mesclagem altera as configurações de detecção de conflito para um artigo publicado.

DECLARE @publication AS sysname;
DECLARE @article AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @article = N'SalesOrderHeader';

-- Enable column-level conflict tracking.
-- Changing this property requires that existing subscriptions
-- be reinitialized and that a new snapshot be generated.
USE [AdventureWorks]
EXEC sp_changemergearticle 
  @publication = @publication,
  @article = @article, 
  @property = N'column_tracking', 
  @value = N'true',
  @force_invalidate_snapshot = 1,
  @force_reinit_subscription = 1;
GO