sp_changemergearticle (Transact-SQL)

Altera as propriedades de um artigo de mesclagem. 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_changemergearticle [ @publication = ] 'publication'
        , [ @article = ] 'article'
    [ , [ @property = ] 'property' ]
    [ , [ @value = ] 'value' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]

Argumentos

  • [ @publication=] 'publication'
    É o nome da publicação em que se encontra o artigo. publication é sysname, sem padrão definido.

  • [ @article=] 'article'
    É o nome do artigo a ser alterado. article é sysname, sem padrão definido.

  • [ @property=] 'property'
    É a propriedade a ser alterada de um determinado artigo e publicação. property é nvarchar(30) e pode ser um dos valores listados na tabela.

  • [ @value=] 'value'
    É o novo valor da propriedade especificada. value é nvarchar(1000) e pode ser um dos valores listados na tabela.

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

    Propriedade

    Valores

    Descrição

    allow_interactive_resolver

    true

    Habilita o uso de um resolvedor interativo para o artigo.

     

    false

    Desabilita o uso de um resolvedor interativo para o artigo.

    article_resolver

     

    Resolvedor personalizado para o artigo. Só se aplica a um artigo de tabela.

    check_permissions (bitmap)

    0x00

    Permissões de nível de tabela não são verificadas.

     

    0x10

    Permissões de nível de tabela são verificadas no Publicador antes que as instruções INSERT feitas no Assinante sejam aplicadas no Publicador.

     

    0x20

    Permissões de nível de tabela são verificadas no Publicador antes que as instruções UPDATE feitas no Assinante sejam aplicadas no Publicador.

     

    0x40

    Permissões de nível de tabela são verificadas no Publicador antes que as instruções DELETE feitas no Assinante sejam aplicadas no Publicador.

    column_tracking

    true

    Ativa o rastreamento de nível de coluna. Só se aplica a um artigo de tabela.

    ObservaçãoObservação
    Rastreamento de nível de coluna não pode ser usado ao publicar tabelas com mais de 246 colunas.

     

    false

    Ativa o rastreamento de nível de coluna e deixa detecção de conflito no nível de linha. Só se aplica a um artigo de tabela.

    compensate_for_errors

    true

    Ações de compensação são executadas quando ocorrem erros durante a sincronização. Para obter mais informações, consulte sp_addmergearticle.

     

    false

    As ações de compensação não são executadas, o que é o comportamento padrão. Para obter mais informações, consulte sp_addmergearticle.

    Observação importanteImportante
    Embora os dados nas linhas afetadas pareçam estar fora de convergência, assim que você abordar qualquer erro as alterações poderão ser aplicadas e os dados convergidos. Se a tabela de origem de um artigo já estiver publicada em outra publicação, então o valor compensate_for_errors deverá ser o mesmo para os dois artigos.

    creation_script

     

    Caminho e nome de um script de esquema de artigo opcional usados para criar o artigo no banco de dados de assinatura.

    delete_tracking

    true

    Instruções DELETE são replicadas, o que é o comportamento padrão.

     

    false

    Instruções DELETE não são replicadas.

    Observação importanteImportante
    A definição de delete_tracking como false resulta em não convergência e as linhas excluídas precisam ser removidas manualmente.

    description

     

    Entrada descritiva para o artigo.

    destination_owner

     

    Nome do proprietário do objeto no banco de dados de assinatura, se não for dbo.

    identity_range

     

    bigint que especifica o tamanho do intervalo durante a atribuição de novos valores de identidade, caso o artigo tenha identityrangemanagementoption definido como auto ou auto_identity_range definido como true. Só se aplica a um artigo de tabela. Para obter mais informações, consulte a seção "Replicação de mesclagem" em Colunas de identidade de replicação.

    identityrangemanagementoption

    manual

    Desabilita gerenciamento de intervalo de identidade automático. Marca colunas de identidade usando NOT FOR REPLICATION para ativar tratamento de intervalo de identidade manual. Para obter mais informações, consulte Colunas de identidade de replicação.

     

    none

    Desabilita todo o gerenciamento de intervalo de identidade.

    logical_record_level_conflict_detection

    true

    Um conflito será detectado se forem feitas alterações no registro lógico. Requer que logical_record_level_conflict_resolution seja definido como true.

     

    false

    A detecção de conflito padrão é usada como especificado por column_tracking.

    logical_record_level_conflict_resolution

    true

    Todo o registro lógico vencedor substitui o registro lógico perdedor.

     

    false

    As linhas vencedoras não são restringidas ao registro lógico.

    partition_options

    0

    A filtragem para o artigo ou é estática ou não gera um subconjunto único de dados para cada partição, ou seja, uma partição “sobreposta”.

     

    1

    As partições são sobrepostas e as atualizações DML feitas no Assinante não podem alterar a partição a qual pertence uma linha.

     

    2

    A filtragem para o artigo gera partições não sobrepostas, mas vários Assinantes podem receber a mesma partição.

     

    3

    A filtragem para o artigo gera partições não sobrepostas exclusivas de cada assinatura.

    ObservaçãoObservação
    Se você especificar um valor 3 para partition_options, poderá haver apenas uma única assinatura para cada partição de dados naquele artigo. Se uma segunda assinatura for criada na qual o critério de filtragem da nova assinatura for resolvido para a mesma partição como a assinatura existente, a assinatura existente será cancelada.

    pre_creation_command

    none

    Se a tabela já existir no Assinante, nenhuma ação será tomada.

     

    delete

    Emite uma exclusão com base na cláusula WHERE no filtro de subconjunto.

     

    drop

    Cancela a tabela antes de recriá-la.

     

    truncate

    Trunca a tabela de destino.

    processing_order

     

    int que indica a ordem de processamento de artigos em uma publicação de mesclagem.

    pub_identity_range

     

    bigint que especifica o tamanho do intervalo alocado a um Assinante com uma assinatura de servidor se o artigo tiver identityrangemanagementoption definido como auto ou auto_identity_range definido como true. Esse intervalo de identidade é reservado para um Assinante de republicação para ser alocado aos seus próprios Assinantes. Só se aplica a um artigo de tabela. Para obter mais informações, consulte a seção "Replicação de mesclagem" em Colunas de identidade de replicação.

    published_in_tran_pub

    true

    Artigo também é publicado em uma publicação transacional.

     

    false

    Artigo também não é publicado em uma publicação transacional.

    resolver_info

     

    É usado para especificar informações adicionais requeridas por um determinador personalizado. Alguns resolvedores Microsoft necessitam de uma coluna fornecida como entrada para o resolvedor. resolver_info é nvarchar(255), com um padrão NULL. Para obter mais informações, consulte Resolvedores Microsoft baseados em COM.

    schema_option (bitmap)

    Para obter mais informações, consulte a seção Comentários, posteriormente neste tópico.

     

    0x00

    Desabilita execução de script pelo Snapshot Agent e usa o script fornecido em creation_script.

     

    0x01

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

     

    0x10

    Gera um índice clusterizado correspondente.

     

    0x20

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

     

    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

    Gera instruções ALTER TABLE em scripts de restrições.

     

    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

    Replica associações padrão.

     

    0x800000

    Replica associações de regra.

     

    0x1000000

    Replica í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 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) 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.

     

    NULL

    O sistema gera automaticamente uma opção de esquema válida para o artigo.

    status

    active

    O script de processamento inicial para publicação da tabela é executado.

     

    unsynced

    O script de processamento inicial para publicar a tabela é executado da próxima vez que o Snapshot Agent é executado.

    stream_blob_columns

    true

    Uma otimização de fluxo de dados é usada ao replicar colunas de objeto binário grande. No entanto, certas funcionalidades de replicação de mesclagem, como registros lógicos, ainda podem impedir que a otimização de fluxo seja usada quando replicar objetos grandes binários mesmo com stream_blob_columns será definido como true quando FILESTREAM estiver habilitado. Isso permite a replicação de dados FILESTREAM para executar da maneira ideal e reduzir a utilização de memória. Para forçar os artigos de tabela FILESTREAM a não usarem o fluxo de blob, defina stream_blob_columns como false.

    Observação importanteImportante
    A habilitação dessa otimização de memória pode prejudicar o desempenho do Merge Agent durante a sincronização. Essa opção só deve ser usada ao replicar colunas que contêm megabytes de dados.

     

    false

    A otimização não é usada ao replicar colunas de objeto binário grande.

    subscriber_upload_options

    0

    Nenhuma restrição em atualizações feitas a um Assinante com uma assinatura de cliente. As alterações são carregadas no Publicador. A alteração dessa propriedade pode requerer a reinicialização de Assinantes existentes.

     

    1

    As alterações são permitidas em um Assinante com assinatura de cliente, mas elas não são carregadas no Publicador.

     

    2

    Não são permitidas alterações em um Assinante com uma assinatura de cliente.

    subset_filterclause

     

    Cláusula WHERE especificando filtragem horizontal. Só se aplica a um artigo de tabela.

    Observação importanteImportante
    Por motivos de desempenho, recomendamos que não sejam aplicadas funções a nomes de colunas em cláusulas de filtragem de linha com parâmetros, como LEFT([MyColumn]) = SUSER_SNAME(). Se você usar HOST_NAME em uma cláusula de filtragem e substituir o valor HOST_NAME, convém converter tipos de dados usando CONVERT. Para obter mais informações sobre práticas recomendadas para esse caso, consulte a seção "Substituindo o valor HOST_NAME ()" em Filtro de linha com parâmetros.

    threshold

     

    Valor de porcentagem usado por Assinantes que executam o SQL Server Compact 3.5 SP2 ou versões anteriores do SQL Server. threshold controla quando o Merge Agent atribui um novo intervalo de identidade. Quando a porcentagem de valores especificada no limite é usada, o Merge Agent cria um novo intervalo de identidade. Usado quando identityrangemanagementoption é definido como auto ou auto_identity_range é definido como true. Só se aplica a um artigo de tabela. Para obter mais informações, consulte a seção "Replicação de mesclagem" em Colunas de identidade de replicação.

    verify_resolver_signature

    1

    A assinatura digital em um resolvedor personalizado é verificada para determinar se é de uma fonte confiável.

     

    0

    A assinatura digital em um resolvedor personalizado não é verificada para determinar se é de uma fonte confiável.

    NULL (padrão)

     

    Retorna a lista de valores com suporte para property.

  • [ @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, sem um padrão 0.

    0 especifica que as alterações no artigo de mesclagem 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 significa 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 criado.

    Consulte a seção 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, sem um padrão 0.

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

    1 significa que alterações no artigo de mesclagem causam a reinicialização de assinaturas existentes e dão permissão para que a reinicialização ocorra.

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

Valores de código de retorno

0 (êxito) ou 1 (falha)

Comentários

sp_changemergearticle é usado em replicação de mesclagem.

Como sp_changemergearticle para alterar propriedades de artigo inicialmente especificadas usando sp_addmergearticle, consulte sp_addmergearticle para obter mais informações sobre essas propriedades.

A alteração 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:

  • check_permissions

  • column_tracking

  • destination_owner

  • pre_creation_cmd

  • schema_options

  • subset_filterclause

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

  • check_permissions

  • column_tracking

  • destination_owner

  • subscriber_upload_options

  • subset_filterclause

Ao especificar um valor 3 para partition_options, os metadados são limpos sempre que o Merge Agent é executado e os instantâneos particionados expiram mais rapidamente. Ao usar essa opção, considere habilitar o instantâneo particionado solicitado pelo assinante. Para obter mais informações, consulte Instantâneos para publicações de mesclagem com filtros com parâmetros.

Ao definir a propriedade column_tracking, se a tabela já tiver sido publicada em outras publicações de mesclagem, o controle da coluna deverá ser o mesmo que o valor usado por artigos existentes com base nessa tabela. Esse parâmetro só é específico a artigos de tabela.

Se várias publicações publicarem artigos com base na mesma tabela subjacente, a alteração da propriedade delete_tracking ou da propriedade compensate_for_errors para um artigo causará a mesma alteração em outros artigos que têm base na mesma tabela.

Se o logon/conta de usuário do Publicador usados pelo processo de mesclagem não possuírem as permissões corretas de tabela, as alterações inválidas serão registradas como conflito.

Ao alterar o valor de schema_option, o sistema não executará uma atualização bit a bit. Isso significa que quando você definir schema_option usando sp_changemergearticle, configurações de bit existentes poderão ser desativadas. Para reter as definições existentes, você deve executar & (Bitwise AND) entre o valor que você esta definindo e o valor atual de schema_option, que pode ser determinado executando sp_helpmergearticle.

Tabela de opção de esquema válida

A tabela a seguir descreve os valores permitidos de schema_option, dependendo do tipo de artigo.

Tipo de artigo

Valores de opção de esquema

apenas esquema de funcionamento

0x01 e 0x2000

apenas esquema de exibição indexada

0x01, 0x040, 0x0100, 0x2000, 0x40000, 0x1000000 e 0x200000

apenas esquema de processamento

0x01 e 0x2000

tabela

Todas as opções.

apenas esquema de exibição

0x01, 0x040, 0x0100, 0x2000, 0x40000, 0x1000000 e 0x200000

Exemplo

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 [AdventureWorks2008R2]
EXEC sp_changemergearticle 
  @publication = @publication,
  @article = @article, 
  @property = N'column_tracking', 
  @value = N'true',
  @force_invalidate_snapshot = 1,
  @force_reinit_subscription = 1;
GO

Permissões

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