Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Altera as propriedades de um artigo de fusão. Este procedimento armazenado é executado no Publisher no banco de dados de publicação.
Transact-SQL convenções de sintaxe
Syntax
sys.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 ]
[ ; ]
Arguments
[ @publication = ] N'publicação'
O nome da publicação onde o artigo existe. @publication é sysname, sem padrão.
[ @article = ] N'artigo'
O nome do artigo vai mudar. @article é sysname, sem padrão.
@property [ = ] N'propriedade'
A propriedade a alterar para o artigo e publicação em questão. @property é sysname, e pode ser um dos valores listados na tabela seguinte.
@value [ = ] N'valor'
O novo valor para a propriedade especificada. @value é nvarchar(2000), e pode ser um dos valores listados na tabela seguinte.
Esta tabela descreve as propriedades dos artigos e os valores dessas propriedades.
| Property | Values | Description |
|---|---|---|
allow_interactive_resolver |
true |
Permite o uso de um resolvedor interativo para o artigo. |
false |
Desativa o uso de um resolvedor interativo para o artigo. | |
article_resolver |
Resolver personalizado para o artigo. Aplica-se apenas a um artigo de tabela. | |
check_permissions (bitmap) |
0x00 |
As permissões ao nível da tabela não são verificadas. |
0x10 |
As permissões ao nível da tabela são verificadas no Publisher antes de INSERT as declarações feitas no Subscritor serem aplicadas no Publisher. | |
0x20 |
As permissões ao nível da tabela são verificadas no Publisher antes de UPDATE as declarações feitas no Subscritor serem aplicadas no Publisher. | |
0x40 |
As permissões ao nível da tabela são verificadas no Publisher antes de DELETE serem aplicadas as instruções no Assinante no Publisher. | |
column_tracking |
true |
Ativa o rastreamento ao nível da coluna. Aplica-se apenas a um artigo de tabela. Nota: O acompanhamento ao nível das colunas não pode ser usado ao publicar tabelas com mais de 246 colunas. |
false |
Desliga o rastreamento ao nível da coluna e deixa a deteção de conflitos ao nível da linha. Aplica-se apenas a um artigo de tabela. | |
compensate_for_errors |
true |
As ações compensatórias são realizadas quando ocorrem erros durante a sincronização. Para mais informações, consulte sp_addmergearticle. |
false |
As ações compensatórias não são realizadas, que é o comportamento padrão. Para mais informações, consulte sp_addmergearticle. Importante: Embora os dados nas linhas afetadas possam parecer fora de convergência, assim que corrigir quaisquer erros, podem ser aplicadas alterações e os dados convergem. Se a tabela fonte de um artigo já estiver publicada noutra publicação, então o valor de compensate_for_errors deve ser o mesmo para ambos os artigos. |
|
creation_script |
Caminho e nome de um script opcional de esquema de artigo usado para criar o artigo na base de dados de subscrição. | |
delete_tracking |
true |
DELETE as instruções são replicadas, que é o comportamento padrão. |
false |
DELETE As afirmações não são replicadas. Importante: Definir delete_tracking para false resulta em não-convergência, e as linhas eliminadas precisam de ser removidas manualmente. |
|
description |
Entrada descritiva para o artigo. | |
destination_owner |
Nome do proprietário do objeto na base de dados de subscrição, se não dbo. | |
identity_range |
bigint que especifica o tamanho do intervalo a usar ao atribuir novos valores de identidade se o artigo tiver identityrangemanagementoption definido como auto ou auto_identity_range definido como true. Aplica-se apenas a um artigo de tabela. Para mais informações, consulte a secção "Merge Replication" de Replicar Colunas de Identidade. |
|
identityrangemanagementoption |
manual |
Desativa a gestão automática de intervalos de identidade. Marca colunas de identidade usando NOT FOR REPLICATION para permitir o tratamento manual do intervalo de identidade. Para obter mais informações, consulte Replicar colunas de identidade. |
none |
Desativa toda a gestão de intervalos de identidade. | |
logical_record_level_conflict_detection |
true |
Um conflito é detetado se forem feitas alterações em qualquer parte do registo lógico. Requer que logical_record_level_conflict_resolution esteja definido como true. |
false |
A deteção de conflitos por defeito é usada conforme especificado por column_tracking. |
|
logical_record_level_conflict_resolution |
true |
Todo o registo lógico vencedor sobrepõe o registo lógico perdedor (losing logical record). |
false |
As filas vencedoras não estão limitadas ao registo lógico. | |
partition_options |
0 |
A filtragem do artigo ou é estática ou não fornece um subconjunto único de dados para cada partição, ou seja, uma partição "sobreposta". |
1 |
As partições sobrepõem-se, e as atualizações DML feitas no assinante não podem alterar a partição a que pertence uma linha. | |
2 |
A filtragem do artigo produz partições não sobrepostas, mas múltiplos Subscritores podem receber a mesma partição. | |
3 |
A filtragem do artigo produz partições não sobrepostas que são únicas para cada subscrição. Nota: Se especificar um valor de 3 para partition_options, só pode haver uma única subscrição para cada partição de dados nesse artigo. Se for criada uma segunda subscrição, na qual o critério de filtragem da nova subscrição se resolve para a mesma partição da subscrição existente, a subscrição existente é cancelada. |
|
pre_creation_command |
none |
Se a tabela já existir no Assinante, não é tomada qualquer ação. |
delete |
Emite uma eliminação com base na cláusula WHERE no filtro de subconjunto. | |
drop |
Deixa a mesa cair antes de a recriar. | |
truncate |
Trunca a tabela de destinos. | |
processing_order |
int que indica a ordem de processamento dos artigos numa publicação de fusão. | |
pub_identity_range |
bigint que especifica o tamanho do intervalo atribuído a um Assinante com uma subscrição de servidor se o artigo tiver identityrangemanagementoption definido para auto ou auto_identity_range definido para true. Este intervalo de identidade é reservado para um Assinante que republica para alocar aos seus próprios Assinantes. Aplica-se apenas a um artigo de tabela. Para mais informações, consulte a secção "Merge Replication" de Replicar Colunas de Identidade. |
|
published_in_tran_pub |
true |
O artigo também é publicado numa publicação transacional. |
false |
O artigo também não é publicado numa publicação transacional. | |
resolver_info |
É usado para especificar informação adicional exigida por um resolvedor personalizado. Alguns dos Microsoft Resolvers requerem uma coluna fornecida como entrada ao resolvedor.
resolver_info é nvarchar(255), com um padrão de NULL. Para mais informações, consulte Conflito Avançado de Replicação de Fusão - COM-Based Resolvers. |
|
schema_option (bitmap) |
Para obter mais informações, consulte a seção |
|
0x00 |
Desativa o scripting do Snapshot Agent e utiliza o script fornecido em creation_script. |
|
0x01 |
Gera o script de criação de objetos (CREATE TABLE, CREATE PROCEDURE, e assim sucessivamente). | |
0x10 |
Gera um índice agrupado correspondente. | |
0x20 |
Converte tipos de dados definidos pelo utilizador em tipos de dados base no Assinante. Esta opção não pode ser usada quando existe um CHECK ou DEFAULT restrição numa coluna de tipo definido pelo utilizador (UDT), se uma coluna UDT fizer parte da chave primária, ou se uma coluna computada referenciar uma coluna UDT. | |
0x40 |
Gera índices não agrupados correspondentes. | |
0x80 |
Inclui integridade referencial declarada nas chaves primárias. | |
0x100 |
Replica os disparadores do utilizador num artigo de tabela, se definido. | |
0x200 |
Replica as restrições de CHAVE ESTRANGEIRA. Se a tabela referenciada não fizer parte de uma publicação, todas as restrições de CHAVE ESTRANGEIRA numa tabela publicada não são replicadas. | |
0x400 |
Replica as restrições do CHECK. | |
0x800 |
Replica os predefinidos. | |
0x1000 |
Replica a colação ao nível da coluna. | |
0x2000 |
Replica propriedades estendidas associadas ao objeto fonte do artigo publicado. | |
0x4000 |
Replica chaves únicas se definidas num artigo de tabela. | |
0x8000 |
Gera ALTER TABLE instruções ao scriptar restrições. | |
0x10000 |
Replica as restrições do CHECK como NÃO PARA REPLICAÇÃO para que as restrições não sejam aplicadas durante a sincronização. | |
0x20000 |
Replica as restrições de CHAVE ESTRANHA como NÃO PARA REPLICAÇÃO para que as restrições não sejam aplicadas durante a sincronização. | |
0x40000 |
Replica grupos de ficheiros 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 tabelas. | |
0x400000 |
Replica Bindings por defeito | |
0x800000 |
Replica Ligações de regras | |
0x1000000 |
Replica o índice do texto completo | |
0x2000000 |
Coleções de esquemas XML ligadas a colunas xml não são replicadas. | |
0x4000000 |
Replica índices em colunas xml . | |
0x8000000 |
Crie quaisquer esquemas que não estejam já presentes 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) para tipos de dados suportados no SQL Server 2000 (8.x). | |
0x40000000 |
Replicar permissões. | |
0x80000000 |
Tente eliminar dependências de quaisquer objetos que não façam parte da publicação. | |
0x100000000 |
Use esta opção para replicar o atributo FILESTREAM, se estiver especificado nas colunas varbinary(max ). Não especifique esta opção se estiver a replicar tabelas para subscritores do SQL Server 2005 (9.x). Replicar tabelas com colunas FILESTREAM para subscritores do SQL Server 2000 (8.x) não é suportado, independentemente de como esta opção de esquema esteja definida. Ver opção 0x800000000relacionada. |
|
0x200000000 |
Converte tipos de dados de data e hora (data, hora, datatimeoffset e datetime2) introduzidos no SQL Server 2008 (10.0.x) para tipos de dados suportados em versões anteriores do SQL Server. | |
0x400000000 |
Replica a opção de compressão para dados e índices. Para obter mais informações, consulte Compactação de dados. | |
0x800000000 |
Defina esta opção para armazenar dados FILESTREAM no seu próprio grupo de ficheiros no Assinante. Se esta opção não estiver definida, os dados do FILESTREAM são armazenados no grupo de ficheiros predefinido. A replicação não cria grupos de ficheiros; portanto, se definir esta opção, deve criar o grupo de ficheiros antes de aplicar o snapshot no Subscritor. Para mais informações sobre como criar objetos antes de aplicar o snapshot, consulte Executar Scripts Antes e Depois de o snapshot ser Aplicado. Ver opção 0x100000000relacionada. |
|
0x1000000000 |
Converte tipos definidos pelo utilizador (UDTs) de common language runtime (CLR) para varbinary(max), de modo que colunas do tipo UDT possam ser replicadas para Assinantes que estejam a correr o SQL Server 2005 (9.x). | |
0x2000000000 |
Converte o tipo de dado hierárquido para varbinary(max) para que as colunas do tipo hierárquido possam ser replicadas para os Assinantes que estão a correr o SQL Server 2005 (9.x). Para mais informações sobre como usar colunas hierárquidas em tabelas replicadas, consulte referência de método de tipo de dados hierárquid. | |
0x4000000000 |
Replica quaisquer índices filtrados na tabela. Para obter mais informações sobre índices filtrados, consulte Criar índices filtrados. | |
0x8000000000 |
Converte os tipos de dados de geografia e geometria para varbinary(max) para que colunas destes tipos possam ser replicadas para Assinantes que estejam a correr o SQL Server 2005 (9.x). | |
0x10000000000 |
Replica índices em colunas de geografiae geometria de tipos. | |
NULL |
O sistema gera automaticamente uma opção de esquema válida para o artigo. | |
status |
active |
É executado o script inicial de processamento para publicar a tabela. |
unsynced |
O script inicial de processamento para publicar a tabela é executado na próxima execução do Snapshot Agent. | |
stream_blob_columns |
true |
Uma otimização de fluxo de dados é utilizada ao replicar colunas binárias de objetos grandes. No entanto, certas funcionalidades de replicação de fusões, como registos lógicos, podem ainda impedir a utilização da otimização de fluxos.
stream_blob_columns é definido para true quando o FILESTREAM está ativado. Isto permite que a replicação dos dados do FILESTREAM funcione de forma ótima e reduza a utilização da memória. Para forçar os artigos da tabela FILESTREAM a não usarem blob streaming, defina stream_blob_columns como false.Importante: Ativar esta 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 contenham megabytes de dados. |
false |
A otimização não é usada ao replicar colunas binárias de objetos grandes. | |
subscriber_upload_options |
0 |
Sem restrições às atualizações feitas num Assinante com subscrição de cliente; as alterações são carregadas para o Publisher. Alterar esta propriedade pode exigir que os Subscritores existentes sejam reinicializados. |
1 |
As alterações são permitidas num assinante com subscrição de cliente, mas não são carregadas para o Publisher. | |
2 |
Não são permitidas alterações num assinante com subscrição de cliente. | |
subset_filterclause |
cláusula WHERE especificando o filtro horizontal. Aplica-se apenas a um artigo de tabela. Importante: Por razões de desempenho, recomendamos que não aplique funções a nomes de colunas em cláusulas parametrizadas de filtro de linhas, como LEFT([MyColumn]) = SUSER_SNAME(). Se usares HOST_NAME numa cláusula de filtro e sobrescreveres o valor HOST_NAME, podes ter de converter os tipos de dados usando CONVERT. Para mais informações sobre as melhores práticas neste caso, consulte a secção "Overwriting the HOST_NAME() Value" em Parameterized Filters - Parameterized Row Filters. |
|
threshold |
Valor percentual usado para subscritores que executam o SQL Server Compact ou versões anteriores do SQL Server.
thresholdcontrola quando o Merge Agent atribui um novo intervalo de identidade. Quando a percentagem de valores especificados no limiar é utilizada, 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 mais informações, consulte a secção "Merge Replication" de Replicar Colunas de Identidade. |
|
verify_resolver_signature |
1 |
A assinatura digital num resolver personalizado é verificada para determinar se vem de uma fonte confiável. |
0 |
A assinatura digital num resolver personalizado não é verificada para determinar se é de uma fonte confiável. | |
NULL (padrão) |
Devolve a lista de valores suportados para @property. |
@force_invalidate_snapshot [ = ] force_invalidate_snapshot
Reconhece que a ação tomada por este procedimento armazenado pode invalidar um snapshot existente.
@force_invalidate_snapshot é bit, com um padrão de 0.
0especifica que alterações ao artigo de fusão não tornam o snapshot inválido. Se o procedimento armazenado detetar que a alteração requer um novo snapshot, ocorre um erro e não são feitas alterações.1significa que alterações ao artigo de fusão podem tornar o snapshot inválido e, se existirem subscrições existentes que exijam um novo snapshot, dá permissão para que o snapshot existente seja marcado como obsoleto e gerado um novo snapshot.
Consulte a secção de Observações para as propriedades que, quando alteradas, exigem a geração de um novo instantâneo.
@force_reinit_subscription [ = ] force_reinit_subscription
Reconhece que a ação tomada por este procedimento armazenado pode exigir a reinicialização das subscrições existentes.
@force_reinit_subscription é bit, com um padrão de 0.
0especifica que alterações ao artigo de fusão não causam a reinicialização da subscrição. Se o procedimento armazenado detetar que a alteração exigiria a reinicialização das subscrições existentes, ocorre um erro e não são feitas alterações.1significa que alterações ao artigo de fusão fazem com que as subscrições existentes sejam reinicializadas e dá permissão para que a reinicialização da subscrição ocorra.
Consulte a secção de Observações para as propriedades que, quando alteradas, exigem que todas as subscrições existentes sejam reinicializadas.
Valores de código de retorno
0 (sucesso) ou 1 (fracasso).
Remarks
sp_changemergearticle é usado na replicação por fusão.
Como sp_changemergearticle é usado para alterar propriedades do artigo que foram inicialmente especificadas usando sp_addmergearticle, consulte sp_addmergearticle para mais informações sobre estas propriedades.
Alterar as seguintes propriedades requer que seja gerado um novo snapshot, e deve especificar um valor de 1 para o parâmetro @force_invalidate_snapshot :
check_permissionscolumn_trackingdestination_ownerpre_creation_commandschema_optionssubset_filterclause
Alterar as seguintes propriedades exige que as subscrições existentes sejam reinicializadas, e deve especificar um valor de 1 para o parâmetro @force_reinit_subscription :
check_permissionscolumn_trackingdestination_ownerpre_creation_commandidentityrangemanagementoptionsubscriber_upload_optionssubset_filterclausecreation_scriptschema_optionlogical_record_level_conflict_detectionlogical_record_level_conflict_resolution
Quando especificas um valor de 3 para partition_options, os metadados são limpos sempre que o Merge Agent é executado e o snapshot particionado expira mais rapidamente. Ao usar esta opção, deve considerar ativar snapshots particionados solicitados pelo assinante. Para mais informações, consulte Criar um Snapshot para uma Publicação de Fusão com Filtros Parametrizados.
Ao definir a column_tracking propriedade, se a tabela já estiver publicada noutras publicações de fusão, o acompanhamento das colunas deve ser o mesmo que o valor usado pelos artigos existentes com base nesta tabela. Este parâmetro é específico apenas para artigos de tabelas.
Se várias publicações publicarem artigos baseados na mesma tabela subjacente, alterar a delete_tracking propriedade ou a compensate_for_errors propriedade de um artigo faz com que a mesma alteração seja feita nos outros artigos baseados na mesma tabela.
Se o login/conta de utilizador do Publisher usado pelo processo de fusão não tiver as permissões corretas da tabela, as alterações inválidas são registadas como conflitos.
Quando alteras o valor de schema_option, o sistema não realiza uma atualização bit a bit. Isto significa que, ao definir schema_option usando sp_changemergearticle, as definições existentes dos bits podem estar desligadas. Para manter as definições existentes, deve executar & (bit a bit AND) entre o valor que está a definir e o valor atual de schema_option, que pode ser determinado executando sp_helpmergearticle.
Caution
Quando tens muitos (talvez centenas) de artigos numa publicação e escreves sp_changemergearticle para um deles, pode demorar muito tempo a ser concluído.
Tabela de opções de esquema válida
A tabela seguinte descreve os valores permitidos schema_option , dependendo do tipo de artigo.
| Tipo de artigo | Valores das opções de esquema |
|---|---|
func schema only |
0x01 e 0x2000 |
indexed view schema only |
0x01, 0x040, , 0x0100, 0x2000, 0x400000x1000000, e0x200000 |
proc schema only |
0x01 e 0x2000 |
table |
Todas as opções. |
view schema only |
0x01, 0x040, , 0x0100, 0x2000, 0x400000x1000000, e0x200000 |
Examples
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
Permissions
Apenas os membros do papel fixo de servidor administrador do sistema ou db_owner papel fixo de base de dados podem executar sp_changemergearticle.