Partilhar via


sp_changearticle (Transact-SQL)

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure

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 publicador.

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Argumentos

@publication [ = ] N'publicação'

O nome da publicação que contém o artigo. @publication é sysname, com um padrão de NULL.

@article [ = ] N'artigo'

O nome do artigo cuja propriedade deve ser alterada. @article é sysname, com um padrão de NULL.

@property [ = ] N'propriedade'

Uma propriedade de artigo a ser alterada. @property é nvarchar(100), com um padrão de NULL.

@value [ = ] N'valor'

O novo valor da propriedade article. @value é nvarchar(255), com um padrão de NULL.

Essa tabela descreve as propriedades de artigos e os valores dessas 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 DELETE instrução a ser executada; caso contrário, ele é construído a partir 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 na 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ção: para que os gatilhos sejam replicados, o valor da máscara de schema_option bits deve incluir o valor 0x100.
false Os 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 INSERT instrução a ser executada; caso contrário, ele é construído a partir 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é binário(8). Para obter mais informações, consulte a seção Comentários.
0x00 Desabilita execução de script pelo Agente de Instantâneo.
0x01 Gera a criação do objeto (CREATE TABLE, CREATE PROCEDUREe assim por diante).
0x02 Gera os procedimentos armazenados que propagam alterações para o artigo, se definido.
0x04 As colunas de identidade são roteirizadas usando a IDENTITY propriedade.
0x08 Replicar colunas de carimbo de data/hora . Se não for definido, as colunas de carimbo de data/hora serão replicadas como binárias.
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 pode ser usada quando há uma CHECK restrição or DEFAULT em uma coluna UDT, se uma coluna UDT faz parte da chave primária ou se uma coluna computada faz 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 FOREIGN KEY restrições. Se a tabela referenciada não fizer parte de uma publicação, todas as FOREIGN KEY restrições em uma tabela publicada não serão replicadas.
0x400 Replica CHECK restrições.
0x800 Replica padrões.
0x1000 Replica ordenação em 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 Replica a chave primária e as chaves exclusivas em um artigo de tabela como restrições usando ALTER TABLE instruções.

Observação: essa opção está obsoleta. Em vez disso, use 0x80 e 0x4000.
0x10000 Replica CHECK restrições NOT FOR REPLICATION para que as restrições não sejam impostas durante a sincronização.
0x20000 Replica FOREIGN KEY restrições NOT FOR REPLICATION para que as restrições não sejam impostas durante a sincronização.
0x40000 Replica grupos de arquivos associados a uma tabela ou í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 regras.
0x1000000 Índice de texto completo.
0x2000000 As coleções de esquema XML associadas a colunas xml não são replicadas.
0x4000000 Replica índices em colunas xml .
0x8000000 Cria qualquer esquema ainda não presente no assinante.
0x10000000 Converte colunas xml em ntext no Assinante.
0x20000000 Converte tipos de dados de objetos grandes (nvarchar(max), varchar(max) e varbinary(max)) que foram introduzidos no SQL Server 2005 (9.x) em tipos de dados com suporte no SQL Server 2000 (8.x).
0x40000000 Replicar permissões.
0x80000000 Tente descartar dependências para quaisquer objetos que não façam parte da publicação.
0x100000000 Use essa opção para replicar o FILESTREAM atributo se ele for especificado em colunas varbinary(max ). Não especifique essa opção se você estiver replicando tabelas para Assinantes do SQL Server 2005 (9.x). Não há suporte para a replicação de tabelas que têm colunas FILESTREAM para Assinantes do SQL Server 2000 (8.x), independentemente de como essa opção de esquema está definida.

Veja a opção 0x800000000relacionada .
0x200000000 Converte tipos de dados de data e hora (data, hora, datetimeoffset e datetime2) que foram introduzidos no SQL Server 2008 (10.0.x) em tipos de dados com suporte em versões anteriores do SQL Server.
0x400000000 Replica a opção de compactação para dados e índices. Para obter mais informações, consulte Compactação de dados.
0x800000000 Defina essa opção para armazenar dados FILESTREAM em seu próprio grupo de arquivos no Assinante. Se essa opção não estiver 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, deverá 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 Executar scripts antes e depois da aplicação do instantâneo.

Veja a opção 0x100000000relacionada .
0x1000000000 Converte UDTs (tipos definidos pelo usuário) CLR (Common Language Runtime) maiores que 8.000 bytes em varbinary(max) para que as colunas do tipo UDT possam ser replicadas para Assinantes que executam o SQL Server 2005 (9.x).
0x2000000000 Converte o tipo de dados hierarchyid em varbinary(max) para que as colunas do tipo hierarchyid possam ser replicadas para Assinantes que estão executando o SQL Server 2005 (9.x). Para obter mais informações sobre como usar colunas hierarchyid em tabelas replicadas, consulte referência de método de tipo de dados hierarchyid.
0x4000000000 Replica qualquer índice filtrado na tabela. Para obter mais informações sobre índices filtrados, confira Criar índices filtrados.
0x8000000000 Converte os tipos de dados geography e geometry em varbinary(max) para que as colunas desses tipos possam ser replicadas para Assinantes que estão executando o SQL Server 2005 (9.x).
0x10000000000 Replica índices em colunas do tipo geography e geometry.
0x20000000000 Replica o SPARSE atributo para colunas. Para obter mais informações sobre esse atributo, consulte Usar colunas esparsas.
0x40000000000 Habilite o script pelo agente de instantâneo para criar uma tabela com otimização de memória no assinante.
0x80000000000 Converte o índice clusterizado em índice não clusterizado para artigos com otimização de memória.
status Especifica o novo status da propriedade.
dts horizontal partitions Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
include column names Os nomes das colunas são incluídos na instrução replicada INSERT .
no column names Os nomes das colunas não são incluídos na instrução replicada INSERT .
no dts horizontal partitions A partição horizontal do 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 Gerenciar espaços de tabela Oracle.
threshold Valor percentual para controle quando o Distribution Agent atribuir 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 você também defina as sync_object propriedades e filter . Sem suporte para Publicadores Oracle.
logbased manualfilter Artigo com base em log com filtro manual. Essa opção requer que você também defina as sync_object propriedades e filter . Sem suporte para Publicadores Oracle.
logbased manualview Artigo com base em log com exibição manual. Essa opção requer que você também defina a sync_object propriedade. 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 você também defina as sync_object propriedades e filter . Para esse 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 você também defina as sync_object propriedades e filter . 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 você também defina a sync_object propriedade. Para esse tipo de artigo, a tabela base não precisa ser publicada separadamente. Sem suporte para Publicadores Oracle.
upd_cmd UPDATE instrução a ser executada; caso contrário, ele é construído a partir do log.
NULL NULL Retorna uma lista de propriedades de artigo que podem ser alteradas.

@force_invalidate_snapshot [ = ] force_invalidate_snapshot

Confirma que a ação executada por esse procedimento armazenado pode invalidar um instantâneo existente. @force_invalidate_snapshot é bit, com um padrão de 0.

0 Especifica que as alterações no artigo não fazem com que o instantâneo seja inválido. 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 podem fazer com que o instantâneo seja inválido e, se houver assinaturas existentes que exijam um novo instantâneo, dá permissão para que o instantâneo existente seja marcado como obsoleto e um novo instantâneo seja gerado.

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

@force_reinit_subscription [ = ] force_reinit_subscription

Confirma que a ação executada por esse procedimento armazenado pode exigir que as assinaturas existentes sejam reinicializadas. @force_reinit_subscription é bit, com um padrão de 0.

0 Especifica que as alterações no artigo não fazem com que a assinatura seja reinicializada. Se o procedimento armazenado detectar que a alteração requer que as assinaturas existentes sejam reinicializadas, ocorrerá um erro e nenhuma alteração será feita.

1 Especifica que as alterações no artigo fazem com que as assinaturas existentes sejam reinicializadas e dá permissão para que a reinicialização da assinatura ocorra.

Consulte a seção Comentários para obter as propriedades que, quando alteradas, exigem que todas as assinaturas existentes sejam reinicializadas.

@publisher [ = ] N'editor'

Especifica um Publicador não-SQL Server. @publisher é sysname, com um padrão de NULL.

Observação

publisher não deve ser usado ao alterar as propriedades do artigo em um Publicador do SQL Server.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Comentários

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

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

A alteração de qualquer uma das propriedades a seguir 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 uma das propriedades a seguir requer que as assinaturas existentes sejam reinicializadas e você deve especificar um valor de 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 o para alterar um artigo sem precisar descartar e recriar a publicação inteira.

Observação

Ao alterar o valor de schema_option, o sistema não executa uma atualização bit a bit. Isso significa que, quando você define schema_option usando sp_changearticle, as configurações de bits existentes podem ser desativadas. Para manter as configurações existentes, você deve executar | (OU bit a bit) entre o valor que você está definindo 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 com base no tipo de replicação (mostrado na parte superior) e no tipo de schema_option artigo (mostrado abaixo na primeira coluna).

Tipo de artigo Tipo de replicação - Transacional Tipo de replicação - Instantâneo
logbased Todas as opções Todas as opções, mas 0x02
logbased manualfilter Todas as opções Todas as opções, mas 0x02
logbased manualview Todas as opções Todas as opções, mas 0x02
indexed view logbased Todas as opções Todas as opções, mas 0x02
indexed view logbased manualfilter Todas as opções Todas as opções, mas 0x02
indexed view logbased manualview Todas as opções Todas as opções, mas 0x02
indexed view logbase manualboth Todas as opções Todas as opções, mas 0x02
proc exec 0x01, 0x20, 0x2000, 0x400000, 0x8000000x200000000x20000000x100000000x80000000x40000000e0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x8000000x200000000x20000000x100000000x80000000x40000000e0x80000000
serializable proc exec 0x01, 0x20, 0x2000, 0x400000, 0x8000000x200000000x20000000x100000000x80000000x40000000e0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x8000000x200000000x20000000x100000000x80000000x40000000e0x80000000
proc schema only 0x01, 0x20, 0x2000, 0x400000, 0x8000000x200000000x20000000x100000000x80000000x40000000e0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x8000000x200000000x20000000x100000000x80000000x40000000e0x80000000
view schema only 0x01, 0x010, 0x020, 0x040, 0x0100, 0x20000x4000000x1000000x400000x8000000x20000000x2000000x8000000, , e 0x400000000x80000000 0x01, 0x010, 0x020, 0x040, 0x0100, 0x20000x4000000x1000000x400000x8000000x20000000x2000000x8000000, , e 0x400000000x80000000
func schema only 0x01, 0x20, 0x2000, 0x400000, 0x8000000x200000000x20000000x100000000x80000000x40000000e0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x8000000x200000000x20000000x100000000x80000000x40000000e0x80000000
indexed view schema only 0x01, 0x010, 0x020, 0x040, 0x0100, 0x20000x4000000x1000000x400000x8000000x20000000x2000000x8000000, , e 0x400000000x80000000 0x01, 0x010, 0x020, 0x040, 0x0100, 0x20000x4000000x1000000x400000x8000000x20000000x2000000x8000000, , e 0x400000000x80000000

Observação

Para publicações de atualização enfileiradas, o schema_option valor de 0x80 deve ser habilitado. Os valores com suporte schema_option para publicações não SQL Server são: 0x01, 0x02, 0x100x40, , 0x800x1000 e 0x4000.

Exemplos

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 [AdventureWorks2022]
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 db_owner função de banco de dados fixa podem executar sp_changearticle.