sp_changearticle (Transact-SQL)

Altera as propriedades de um artigo em uma publicação transacional ou de instantâneo. Esse procedimento armazenado é executado no Publicador, no banco de dados de publicação.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

sp_changearticle [ [@publication= ] 'publication' ]
    [ , [ @article= ] 'article' ]
    [ , [ @property= ] 'property' ]
    [ , [ @value= ] 'value' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
    [ , [ @publisher = ] 'publisher' ]

Argumentos

  • [ [ @publication=] 'publication'
    É o nome da publicação que contém o artigo. publication é sysname, com um padrão NULL.

  • [ [ @article=] 'article'
    É o nome do artigo cuja propriedade deve ser alterada. article é sysname, com um padrão NULL.

  • [ [ @property=] 'property'
    É uma propriedade de artigo a ser alterada. property é nvarchar(100).

  • [ [ @value=] 'value'
    É o valor novo da propriedade de artigo. value é nvarchar(255).

    Essa tabela descreve as propriedades de artigos e os valores para essas propriedades.

    Propriedade

    Valores

    Descrição

    creation_script

     

    Caminho e nome de um script de esquema de artigo usados para criar tabelas de destino. O padrão é NULL.

    del_cmd

     

    Instrução DELETE a ser executada; caso contrário, será construída do log.

    description

     

    Nova entrada descritiva para o artigo.

    dest_object

     

    Fornecido para compatibilidade com versões anteriores. Use dest_table.

    dest_table

     

    Nova tabela de destino.

    destination_owner

     

    Nome do proprietário do objeto de destino.

    filter

     

    Novo procedimento armazenado a ser usado para filtrar a tabela (filtragem horizontal). O padrão é NULL. Não pode ser alterado para publicações em replicação ponto a ponto.

    fire_triggers_on_snapshot

    true

    Gatilhos de usuário replicados são executados quando o instantâneo inicial é aplicado.

    ObservaçãoObservação
    Para gatilhos a serem replicados, o valor bitmask de schema_option deve incluir o 0x100.

     

    false

    Gatilhos de usuário replicados não são executados quando o instantâneo inicial é aplicado.

    identity_range

     

    Controla o tamanho de intervalos de identidade atribuídos atribuído ao Assinante. Sem suporte para replicação ponto a ponto.

    ins_cmd

     

    Instrução INSERT a ser executada; caso contrário, será construída do log.

    pre_creation_cmd

    Comando de pré-criação que pode descartar, excluir ou truncar a tabela de destino antes que a sincronização seja aplicada.

     

    none

    Não usa um comando.

     

    drop

    Descarta a tabela de destino.

     

    delete

    Exclui a tabela de destino.

     

    truncate

    Trunca a tabela de destino.

    pub_identity_range

     

    Controla o tamanho de intervalos de identidade atribuídos atribuído ao Assinante. Sem suporte para replicação ponto a ponto.

    schema_option

    Especifica o bitmap da opção de geração de esquema para o artigo determinado. schema_option é binary(8). Para obter mais informações, consulte a seção Comentários, posteriormente neste tópico.

     

    0x00

    Desabilita execução de script pelo Snapshot Agent.

     

    0x01

    Gera a criação do objeto (CREATE TABLE, CREATE PROCEDURE, e assim por diante).

     

    0x02

    Gera os procedimentos armazenados que propagam alterações para o artigo, se definido.

     

    0x04

    Os scripts das colunas de identidade são feitos usando a propriedade IDENTITY .

     

    0x08

    Replica colunas timestamp. Se não definidas, as colunas timestamp são replicadas como binary.

     

    0x10

    Gera um índice clusterizado correspondente.

     

    0x20

    Converte UDTs (tipos de dados definidos pelo usuário) em tipos de dados básicos no Assinante. Essa opção não poderá ser usada quando houver uma restrição CHECK ou DEFAULT em uma coluna UDT, se uma coluna UDT for parte da chave primária ou se uma coluna computada fizer referência a uma coluna UDT. Sem suporte para Publicadores Oracle.

     

    0x40

    Gera índices não clusterizados correspondentes.

     

    0x80

    Inclui integridade referencial declarada nas chaves primárias.

     

    0x100

    Replica gatilhos de usuário em um artigo de tabela, se definido.

     

    0x200

    Replica restrições FOREIGN KEY. Se a tabela referenciada não for parte de uma publicação, todas as restrições FOREIGN KEY em uma tabela publicada não serão replicadas.

     

    0x400

    Replica restrições CHECK.

     

    0x800

    Replica padrões.

     

    0x1000

    Replica agrupamento de nível de coluna.

     

    0x2000

    Replica propriedades estendidas associadas com o objeto de origem do artigo publicado.

     

    0x4000

    Replica chaves exclusivas definidas em um artigo de tabela.

     

    0x8000

    Reproduz chave primária e chaves exclusivas em um artigo de tabela como restrições usando instruções ALTER TABLE.

    ObservaçãoObservação
    Essa opção foi preterida. Use 0x80 e 0x4000 no lugar.

     

    0x10000

    Replica instruções CHECK como NOT FOR REPLICATION para que as restrições não sejam forçadas durante a sincronização.

     

    0x20000

    Replica instruções FOREIGN KEY como NOT FOR REPLICATION para que as restrições não sejam forçadas durante a sincronização.

     

    0x40000

    Replica grupos de arquivos associados com uma tabela ou um índice particionado.

     

    0x80000

    Replica o esquema de partição para uma tabela particionada.

     

    0x100000

    Replica o esquema de partição para um índice particionado.

     

    0x200000

    Replica estatísticas de tabela.

     

    0x400000

    Associações padrão

     

    0x800000

    Associações de regra

     

    0x1000000

    Índice de texto completo

     

    0x2000000

    Coleções de esquema CXML associadas a colunas xml não são replicadas.

     

    0x4000000

    Replica índices em colunas xml.

     

    0x8000000

    Crie esquemas ainda não presentes no assinante.

     

    0x10000000

    Converte colunas xml em ntext no Assinante.

     

    0x20000000

    Converte tipos de dados de objeto grande (nvarchar(max), varchar(max) e varbinary(max)) que foram apresentados no SQL Server 2005 em tipos de dados com suporte no SQL Server 2000. Para obter informações sobre como esses tipos são mapeados, consulte a seção “Mapeando novos tipos de dados para versões anteriores”, em Usando várias versões do SQL Server em uma topologia de replicação.

     

    0x40000000

    Replica permissões.

     

    0x80000000

    Tenta descartar dependências de qualquer objeto que não faz parte da publicação.

    0x100000000

    Use essa opção para replicar o atributo FILESTREAM, se ele for especificado em colunas varbinary(max). Não especifique essa opção se você estiver replicando tabelas para Assinantes SQL Server 2005. A replicação de tabelas com colunas FILESTREAM para Assinantes do SQL Server 2000 não tem suporte, independentemente de como essa opção de esquema é definida.

    Consulte a opção relacionada 0x800000000.

    0x200000000

    Converte tipos de dados de data e hora (date, time, datetimeoffset e datetime2) que foram apresentados no SQL Server 2008 em tipos de dados com suporte nas versões anteriores do SQL Server. Para obter informações sobre como esses tipos são mapeados, consulte a seção “Mapeando novos tipos de dados para versões anteriores”, em Usando várias versões do SQL Server em uma topologia de replicação.

    0x400000000

    Replica a opção de compressão para dados e índices. Para obter mais informações, consulte Criando tabelas e índices compactados.

    0x800000000

    Defina essa opção para armazenar dados FILESTREAM em seu próprio grupo de arquivos no Assinante. Se esta opção não for definida, os dados FILESTREAM serão armazenados no grupo de arquivos padrão. A replicação não cria grupos de arquivos; portanto, se você definir essa opção, terá de criar o grupo de arquivos antes de aplicar o instantâneo no Assinante. Para obter mais informações sobre como criar objetos antes de aplicar o instantâneo, consulte Executando scripts antes ou depois que o instantâneo é aplicado.

    Consulte a opção relacionada 0x100000000.

    0x1000000000

    Converte UDTs (tipos definidos pelo usuário) de CLR (Common Language Runtime) maiores de 8000 bytes em varbinary(max) para que as colunas do tipo UDT possam ser replicadas para os Assinantes em execução no SQL Server 2005.

    0x2000000000

    Converte tipo de dados hierarchyid em varbinary(max) para que colunas do tipo hierarchyid possam ser replicadas para os Assinantes em execução no SQL Server 2005. Para obter mais informações sobre como usar colunas hierarchyid em tabelas replicadas, consulte hierarchyid (Transact-SQL).

    0x4000000000

    Reproduz qualquer índice filtrado na tabela. Para obter mais informações sobre índices filtrados, consulte Diretrizes de criação de índice filtrado.

     

    0x8000000000

    Converte tipo de dados geography e geometry para que colunas do tipo varbinary(max) possam ser replicadas para os assinantes em execução no SQL Server 2005.

     

    0x10000000000

    Replica índices em colunas do tipo geography e geometry.

    0x20000000000

    Replica o atributo SPARSE para colunas. Para obter mais informações sobre esse atributo, consulte Usando colunas esparsas.

    status

    Especifica o novo status da propriedade.

     

    dts horizontal partitions

    Identificado apenas para fins informativos. Sem suporte. A compatibilidade futura não está garantida.

     

    include column names

    Nomes de coluna são incluídos na instrução INSERT replicada.

     

    no column names

    Nomes de coluna não são incluídos na instrução INSERT replicada.

     

    no dts horizontal partitions

    A partição horizontal para o artigo não é definida por uma assinatura transformável.

     

    none

    Limpa todas as opções de status na tabela sysarticles e marca o artigo como inativo.

     

    parameters

    As alterações são propagadas ao Assinante usando comandos com parâmetros. Essa é a configuração padrão para um novo artigo.

     

    string literals

    As alterações são propagadas ao Assinante usando valores de literal de cadeia de caracteres.

    sync_object

     

    Nome da tabela ou exibição usado para produzir um arquivo de saída de sincronização. O padrão é NULL. Sem suporte para Publicadores Oracle.

    tablespace

    Identifica o espaço de tabela usado pela tabela de log para um artigo publicado de um banco de dados de Oracle. Para obter mais informações, consulte Gerenciando espaços de tabela Oracle.

    threshold

     

    Valor de porcentagem que controla quando o Distribution Agent atribui um novo intervalo de identidade. Sem suporte para replicação ponto a ponto.

    type

     

    Sem suporte para Publicadores Oracle.

     

    logbased

    Artigo com base em log.

     

    logbased manualboth

    Artigo com base em log com filtro manual e exibição manual. Essa opção requer que as propriedades sync_object e filter também sejam definidas. Sem suporte para Publicadores Oracle.

     

    logbased manualfilter

    Artigo com base em log com filtro manual. Essa opção requer que as propriedades sync_object e filter também sejam definidas. Sem suporte para Publicadores Oracle.

     

    logbased manualview

    Artigo com base em log com exibição manual. Essa opção requer que a propriedade sync_object também seja definida. Sem suporte para Publicadores Oracle.

     

    indexed viewlogbased

    Artigo de exibição indexada com base em log. Sem suporte para Publicadores Oracle. Para esse tipo de artigo, a tabela base não precisa ser publicada separadamente.

     

    indexed viewlogbased manualboth

    Artigo de exibição indexada com filtro manual e exibição manual. Essa opção requer que as propriedades sync_object e filter também sejam definidas. Para este tipo de artigo, a tabela base não precisa ser publicada separadamente. Sem suporte para Publicadores Oracle.

     

    indexed viewlogbased manualfilter

    Artigo de exibição indexada com filtro manual. Essa opção requer que as propriedades sync_object e filter também sejam definidas. Para esse tipo de artigo, a tabela base não precisa ser publicada separadamente. Sem suporte para Publicadores Oracle.

     

    indexed viewlogbased manualview

    Artigo de exibição indexada com base em log com exibição manual. Essa opção requer que a propriedade sync_object também seja definida. Para esse tipo de artigo, a tabela base não precisa ser publicada separadamente. Sem suporte para Publicadores Oracle.

    upd_cmd

     

    Instrução UPADTE a ser executada; caso contrário, será construída do log.

    NULL

    NULL

    Retorna uma lista de propriedades de artigo que podem ser alteradas.

  • [ [ @force_invalidate_snapshot = ] force_invalidate_snapshot
    Reconhece que a ação tomada por esse procedimento armazenado pode invalidar um instantâneo existente. force_invalidate_snapshot é um bit, com um padrão 0.

    0 especifica que as alterações no artigo não invalidam o instantâneo. Se o procedimento armazenado detectar que a alteração requer um novo instantâneo, ocorrerá um erro e nenhuma alteração será feita.

    1 especifica que as alterações no artigo de mesclagem podem invalidar o instantâneo e se houver assinaturas existentes que exigem um novo instantâneo, dará permissão para que o instantâneo existente seja marcado como obsoleto e um novo instantâneo seja gerado.

    Consulte a seção de Comentários para as propriedades que, quando alteradas, requerem a geração de um novo instantâneo.

  • [ [ **@force_reinit_subscription=]**force_reinit_subscription
    Reconhece que a ação tomada por esse procedimento armazenado pode requerer que as assinaturas existentes sejam reinicializadas. force_reinit_subscription é um bit, com um padrão 0.

    0 especifica que as alterações no artigo não fazem com que a assinatura seja reiniciada. Se o procedimento armazenado detectar que a alteração irá requerer assinaturas existentes para ser reiniciada, ocorrerá um erro e nenhuma alteração será feita.

    1 especifica que as alterações no artigo fazem com que a assinatura seja reiniciada e dá permissão para que a reinicialização da assinatura ocorra.

    Consulte a seção de Comentários para as propriedades que, quando alteradas, requerem que todas as assinaturas existentes sejam reiniciadas.

  • [ [ @publisher= ] 'publisher'
    Especifica um Publicador não-SQL Server. publisher é sysname, com um padrão NULL.

    ObservaçãoObservação

    publisher não deve ser usado ao alterar propriedades de artigo em um Editor SQL Server.

Valores de código de retorno

0 (êxito) ou 1 (falha)

Comentários

sp_changearticle é usado em replicação de instantâneo e replicação transacional.

Quando um artigo pertence a uma publicação que oferece suporte a replicação transacional ponto a ponto, você só pode alterar as propriedades description, ins_cmd, upd_cmd e del_cmd.

A alteração de qualquer uma das propriedades seguintes requer que um novo instantâneo seja gerado e você deve especificar um valor de 1 para o parâmetro force_invalidate_snapshot:

  • del_cmd

  • dest_table

  • destination_owner

  • ins_cmd

  • pre_creation_cmd

  • schema_options

  • upd_cmd

A alteração de qualquer um das propriedades seguintes requer que assinaturas existentes sejam reiniciadas e você deve especificar um valor 1 para o parâmetro force_reinit_subscription:

  • del_cmd

  • dest_table

  • destination_owner

  • filter

  • ins_cmd

  • status

  • upd_cmd

Em uma publicação existente, você pode usar sp_changearticle para alterar um artigo, sem precisar descartar e recriar toda a publicação.

ObservaçãoObservação

Ao alterar o valor de schema_option, o sistema não efetua uma atualização bit a bit. Isso significa que quando você define schema_option usando sp_changearticle, configurações de bit existentes podem ser desativadas. Para reter as definições existentes, você deve executar & (AND de bit a bit) entre o valor que está sendo definido e o valor atual de schema_option, que pode ser determinado executando sp_helparticle.

Opções de esquema válidas

A tabela a seguir descreve os valores permitidos de schema_option com base no tipo de replicação (mostrados na parte superior) e o tipo de artigo (mostrado na parte inferior da primeira coluna).

Tipo de artigo

Tipo de replicação

 

 

Transacional.

Instantâneo

logbased

Todas as opções

Todas as opções, exceto 0x02

logbased manualfilter

Todas as opções

Todas as opções, exceto 0x02

logbased manualview

Todas as opções

Todas as opções, exceto 0x02

indexed view logbased

Todas as opções

Todas as opções, exceto 0x02

indexed view logbased manualfilter

Todas as opções

Todas as opções, exceto 0x02

indexed view logbased manualview

Todas as opções

Todas as opções, exceto 0x02

indexed view logbase manualboth

Todas as opções

Todas as opções, exceto 0x02

proc exec

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000

execução do processo serializável

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000

proc schema only

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000

view schema only

0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 e 0x80000000

0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 e 0x80000000

func schema only

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000

indexed view schema only

0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 e 0x80000000

0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 e 0x80000000

ObservaçãoObservação

Para publicações de atualização na fila, deve ser ativado o valor schema_option de 0x80. Os valores com suporte schema_option para não-SQL Server são: 0x01, 0x02, 0x10, 0x40, 0x80, 0x1000 e 0x4000.

Exemplo

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 [AdventureWorks2008R2]
EXEC sp_changearticle 
  @publication = @publication,
  @article = @article, 
  @property = N'schema_option', 
  @value = @option,
  @force_invalidate_snapshot = 1;
GO

Permissões

Somente membros da função de servidor fixa sysadmin ou da função de banco de dados db_owner podem executar sp_changearticle.