sp_changemergearticle (Transact-SQL)
Aplica-se: SQL Server
Altera as propriedades de um artigo de mesclagem. Esse procedimento armazenado é executado no Publicador, no banco de dados publicador.
Convenções de sintaxe de Transact-SQL
Sintaxe
sp_changemergearticle
[ @publication = ] N'publication'
, [ @article = ] N'article'
[ , [ @property = ] N'property' ]
[ , [ @value = ] N'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ ; ]
Argumentos
@publication [ = ] N'publicação'
O nome da publicação em que o artigo existe. @publication é sysname, sem padrão.
@article [ = ] N'artigo'
O nome do artigo a ser alterado. @article é sysname, sem padrão.
@property [ = ] N'propriedade'
A propriedade a ser alterada para o artigo e publicação fornecidos. @property é sysname e pode ser um dos valores listados na tabela a seguir.
@value [ = ] N'valor'
O novo valor da propriedade especificada. @value é nvarchar(2000) e pode ser um dos valores listados na tabela a seguir.
Essa tabela descreve as propriedades de artigos e os valores dessas 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. Aplica-se apenas a um artigo de tabela. | |
check_permissions (bitmap) |
0x00 |
As permissões no nível da tabela não são verificadas. |
0x10 |
Permissões em 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 em 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 em 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 em nível de coluna. Aplica-se apenas a um artigo de tabela. Observação: o acompanhamento no nível da coluna não pode ser usado ao publicar tabelas com mais de 246 colunas. |
false |
Ativa o rastreamento em nível de coluna e deixa a detecção de conflito no nível de linha. Aplica-se apenas 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, que é o comportamento padrão. Para obter mais informações, consulte sp_addmergearticle. Importante: embora os dados nas linhas afetadas possam parecer estar fora de convergência, assim que você corrigir erros, as alterações poderão ser aplicadas e os dados serão convergidos. Se a tabela de origem de um artigo já estiver publicada em outra publicação, o valor de compensate_for_errors deverá ser o mesmo para ambos os 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 |
As instruções DELETE não são replicadas. Importante: A configuração 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 a ser usado ao atribuir novos valores de identidade se o artigo tiver identityrangemanagementoption definido como auto auto_identity_range ou definido como true . Aplica-se apenas a um artigo de tabela. Para obter mais informações, consulte a seção "Replicação de mesclagem" de Replicar colunas de identidade. |
|
identityrangemanagementoption |
manual |
Desabilita gerenciamento automático do intervalo de identidade. Marca colunas de identidade com NOT FOR REPLICATION para ativar o tratamento manual do intervalo de identidade. Para obter mais informações, consulte Replicar colunas de identidade. |
none |
Desabilita todo o gerenciamento do 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 esteja definido como true . |
false |
A detecção de conflito padrão é usada conforme especificado pelo 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 restritas ao registro lógico. | |
partition_options |
0 |
A filtragem do artigo é estática ou não produz um subconjunto exclusivo de dados para cada partição, ou seja, uma partição "sobreposta". |
1 |
As partições estão sobrepostas e as atualizações DML feitas no Assinante não podem alterar a partição à qual uma linha pertence. | |
2 |
A filtragem do 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ção: se você especificar um valor de 3 for partition_options , poderá haver apenas uma única assinatura para cada partição de dados nesse artigo. Se uma segunda assinatura for criada, na qual o critério de filtragem da nova assinatura é resolvido para a mesma partição que a assinatura existente, a assinatura existente será descartada. |
|
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 dos 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 true auto auto_identity_range . Esse intervalo de identidade é reservado para um Assinante de republicação para ser alocado a seus próprios Assinantes. Aplica-se apenas a um artigo de tabela. Para obter mais informações, consulte a seção "Replicação de mesclagem" de Replicar colunas de identidade. |
|
published_in_tran_pub |
true |
Artigo também é publicado em uma publicação transacional. |
false |
O 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 dos Resolvedores da Microsoft exigem uma coluna fornecida como entrada para o resolvedor. resolver_info é nvarchar(255), com um padrão de NULL . Para obter mais informações, consulte Conflito avançado de replicação de mesclagem – Resolvedores baseados em COM. |
|
schema_option (bitmap) |
Para obter mais informações, consulte a seção Comentários. | |
0x00 |
Desabilita o script do Snapshot Agent e usa o script fornecido no 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 pode ser usada quando há uma restrição CHECK ou DEFAULT em uma coluna UDT (tipo definido pelo usuário), se uma coluna UDT fizer 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 fizer 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 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 |
Gera instruções ALTER TABLE em scripts de restrições. | |
0x10000 |
Replica as restrições CHECK como NOT FOR REPLICATION para que as restrições não sejam impostas durante a sincronização. | |
0x20000 |
Replica restrições FOREIGN KEY como 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 |
Replica as ligações padrão | |
0x800000 |
Replica associações de regra. | |
0x1000000 |
Replica o í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 atributo FILESTREAM, 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 0x800000000 relacionada . |
|
0x200000000 |
Converte tipos de dados de data e hora (data, hora, datetimeoffset e datetime2) 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, veja 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 0x100000000 relacionada . |
|
0x1000000000 |
Converte UDTs (tipos definidos pelo usuário) CLR (Common Language Runtime) 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. | |
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. Porém, certas funcionalidades de replicação de mesclagem, como registros lógicos, ainda podem impedir que a otimização de fluxo seja usada. stream_blob_columns é definido como true quando FILESTREAM está 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 da tabela FILESTREAM a não usar o streaming de blob, defina stream_blob_columns como false.Importante: Habilitar essa otimização de memória pode prejudicar o desempenho do Merge Agent durante a sincronização. Esta 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 binárias de objetos grandes. | |
subscriber_upload_options |
0 |
Nenhuma restrição em atualizações feitas em um Assinante com uma assinatura de cliente. As alterações são carregadas no Publicador. Alterar essa propriedade pode exigir que os Assinantes existentes sejam reinicializados. |
1 |
As alterações são permitidas em um Assinante com uma assinatura de cliente, mas não são carregadas no Publicador. | |
2 |
As alterações não são permitidas em um Assinante com uma assinatura de cliente. | |
subset_filterclause |
Cláusula WHERE especificando filtragem horizontal. Aplica-se apenas a um artigo de tabela. Importante: Por motivos de desempenho, recomendamos que você não aplique funções a nomes de coluna em cláusulas de filtro de linha com parâmetros, como LEFT([MyColumn]) = SUSER_SNAME() . Se você usar HOST_NAME em uma cláusula de filtro e substituir o valor HOST_NAME, talvez seja necessário converter tipos de dados usando CONVERT. Para obter mais informações sobre as práticas recomendadas para esse caso, consulte a seção "Substituindo o valor HOST_NAME()" em Filtros com parâmetros - Filtros de linha com parâmetros. |
|
threshold |
Valor percentual usado para Assinantes que executam o SQL Server Compact 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 está definido como auto ou auto_identity_range está definido como true . Aplica-se apenas a um artigo de tabela. Para obter mais informações, consulte a seção "Replicação de mesclagem" de Replicar colunas de identidade. |
|
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
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 de mesclagem 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
significa que as alterações no artigo de mesclagem 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 de mesclagem não fazem com que a assinatura seja reinicializada. 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
significa que as alterações no artigo de mesclagem 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.
Valores do código de retorno
0
(sucesso) ou 1
(falha).
Comentários
sp_changemergearticle
é usado na replicação de mesclagem.
Como sp_changemergearticle
é usado para alterar as propriedades do artigo que foram inicialmente especificadas usando sp_addmergearticle, consulte sp_addmergearticle para obter mais informações sobre essas propriedades.
A alteração 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 :
check_permissions
column_tracking
destination_owner
pre_creation_command
schema_options
subset_filterclause
A alteração 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 :
check_permissions
column_tracking
destination_owner
pre_creation_command
identityrangemanagementoption
subscriber_upload_options
subset_filterclause
creation_script
schema_option
logical_record_level_conflict_detection
logical_record_level_conflict_resolution
Quando você especifica um valor de 3
for partition_options
, os metadados são limpos sempre que o Merge Agent é executado e o instantâneo particionado expira mais rapidamente. Ao usar essa opção, considere habilitar o instantâneo particionado solicitado pelo assinante. Para obter mais informações, consulte Criar um instantâneo para uma publicação de mesclagem com filtros com parâmetros.
Ao definir a column_tracking
propriedade, se a tabela já estiver publicada em outras publicações de mesclagem, o controle de coluna deverá ser o mesmo que o valor que está sendo 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 de base, alterar a delete_tracking
propriedade ou a compensate_for_errors
propriedade de um artigo fará com que a mesma alteração seja feita nos outros artigos baseados na mesma tabela.
Se a conta de usuário/logon do editor usada pelo processo de mesclagem não tiver as permissões de tabela corretas, as alterações inválidas serão registradas como conflitos.
Quando você altera 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_changemergearticle
, as configurações de bits existentes podem ser desativadas. Para manter as configurações existentes, você deve executar & (E bit a bit) entre o valor que você está definindo e o valor atual de schema_option
, que pode ser determinado executando sp_helpmergearticle.
Cuidado
Quando você tem muitos (talvez centenas) de artigos em uma publicação e executa sp_changemergearticle
um dos artigos, pode levar muito tempo para concluir a execução.
Tabela de opções de esquema válido
A tabela a seguir descreve os valores permitidos schema_option
, dependendo do tipo de artigo.
Tipo de artigo | Valores de opção de esquema |
---|---|
func schema only |
0x01 e 0x2000 |
indexed view schema only |
0x01 , 0x040 , 0x0100 , 0x2000 , 0x40000 , 0x1000000 e 0x200000 |
proc schema only |
0x01 e 0x2000 |
table |
Todas as opções. |
view schema only |
0x01 , 0x040 , 0x0100 , 0x2000 , 0x40000 , 0x1000000 e 0x200000 |
Exemplos
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 [AdventureWorks2022]
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 função de banco de dados fixa podem executar sp_changemergearticle
.