sys.sp_addmergearticle (Transact-SQL)

Aplica-se a: SQL ServerAzure SQL Managed Instance

Adiciona um artigo a uma publicação de fusão existente. Este procedimento armazenado é executado no Publisher no banco de dados de publicação.

Transact-SQL convenções de sintaxe

Syntax

sys.sp_addmergearticle
    [ @publication = ] N'publication'
    , [ @article = ] N'article'
    , [ @source_object = ] N'source_object'
    [ , [ @type = ] N'type' ]
    [ , [ @description = ] N'description' ]
    [ , [ @column_tracking = ] N'column_tracking' ]
    [ , [ @status = ] N'status' ]
    [ , [ @pre_creation_cmd = ] N'pre_creation_cmd' ]
    [ , [ @creation_script = ] N'creation_script' ]
    [ , [ @schema_option = ] schema_option ]
    [ , [ @subset_filterclause = ] N'subset_filterclause' ]
    [ , [ @article_resolver = ] N'article_resolver' ]
    [ , [ @resolver_info = ] N'resolver_info' ]
    [ , [ @source_owner = ] N'source_owner' ]
    [ , [ @destination_owner = ] N'destination_owner' ]
    [ , [ @vertical_partition = ] N'vertical_partition' ]
    [ , [ @auto_identity_range = ] N'auto_identity_range' ]
    [ , [ @pub_identity_range = ] pub_identity_range ]
    [ , [ @identity_range = ] identity_range ]
    [ , [ @threshold = ] threshold ]
    [ , [ @verify_resolver_signature = ] verify_resolver_signature ]
    [ , [ @destination_object = ] N'destination_object' ]
    [ , [ @allow_interactive_resolver = ] N'allow_interactive_resolver' ]
    [ , [ @fast_multicol_updateproc = ] N'fast_multicol_updateproc' ]
    [ , [ @check_permissions = ] check_permissions ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @published_in_tran_pub = ] N'published_in_tran_pub' ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
    [ , [ @logical_record_level_conflict_detection = ] N'logical_record_level_conflict_detection' ]
    [ , [ @logical_record_level_conflict_resolution = ] N'logical_record_level_conflict_resolution' ]
    [ , [ @partition_options = ] partition_options ]
    [ , [ @processing_order = ] processing_order ]
    [ , [ @subscriber_upload_options = ] subscriber_upload_options ]
    [ , [ @identityrangemanagementoption = ] N'identityrangemanagementoption' ]
    [ , [ @delete_tracking = ] N'delete_tracking' ]
    [ , [ @compensate_for_errors = ] N'compensate_for_errors' ]
    [ , [ @stream_blob_columns = ] N'stream_blob_columns' ]
[ ; ]

Arguments

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

O nome da publicação que contém o artigo. @publication é sysname, sem padrão.

[ @article = ] N'artigo'

O nome do artigo. O nome deve ser único dentro da publicação. @article é sysname, sem padrão. @article deve estar no computador local a correr SQL Server e deve cumprir as regras para identificadores.

@source_object [ = ] N'source_object'

O objeto da base de dados a ser publicado. @source_object é sysname, sem predefinição. Para mais informações sobre os tipos de objetos que podem ser publicados usando replicação por fusão, consulte Publicar Dados e Objetos de Base de Dados.

[ @type = ] N'tipo'

O tipo de artigo. @type é sysname, com um padrão de table, e pode ser um dos seguintes valores.

Value Description
table (padrão) Tabela com esquema e dados. A replicação monitoriza a tabela para determinar os dados a serem replicados.
func schema only Função apenas com esquema.
indexed view schema only Vista indexada apenas com esquema.
proc schema only Procedimento armazenado apenas com esquema.
synonym schema only Apenas sinónimo de esquema.
view schema only Visualizar apenas com o esquema.

[ @description = ] N'descrição'

Uma descrição do artigo. @description é nvarchar(255), com um padrão de NULL.

[ @column_tracking = ] N'column_tracking'

A definição para o rastreamento ao nível das colunas. @column_tracking é nvarchar(10), com um padrão de false. false Ativa o rastreamento da coluna. false desliga o rastreamento de colunas e deixa a deteção de conflitos ao nível da linha. Se a tabela já estiver publicada noutras publicações de fusão, deve usar o mesmo valor de rastreamento de colunas usado pelos artigos existentes com base nesta tabela. Este parâmetro é específico apenas para artigos de tabelas.

Note

Se o rastreamento de linhas for usado para deteção de conflitos (o padrão), a tabela base pode incluir um máximo de 1.024 colunas, mas as colunas devem ser filtradas do artigo para que seja publicado um máximo de 246 colunas. Se o rastreamento de colunas for usado, a tabela base poderá incluir um máximo de 246 colunas.

[ @status = ] N'estado'

O estado do artigo. @status é nvarchar(10), com um padrão de unsynced. Se active, o script inicial de processamento para publicar a tabela é executado. Se unsynced, o script inicial de processamento para publicar a tabela é executado na próxima execução do Snapshot Agent.

[ @pre_creation_cmd = ] N'pre_creation_cmd'

Especifica o que o sistema deve fazer se a tabela existir no assinante ao aplicar o snapshot. @pre_creation_cmd é nvarchar(10) e pode ser um dos seguintes valores.

Value Description
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 (padrão) Deixa a mesa cair antes de a recriar. Obrigado a suportar assinantes do SQL Server Compact.
truncate Trunca a tabela de destinos.

[ @creation_script = ] N'creation_script'

O caminho e o nome de um script opcional de esquema de artigo usado para criar o artigo na base de dados de subscrição. @creation_script é nvarchar(255), com um padrão de NULL.

Note

Os scripts de criação não são executados em subscritores do SQL Server Compact.

[ @schema_option = ] schema_option

Um bitmap da opção de geração de esquemas para o artigo em questão. @schema_option é varbinário(8), e pode ser o | (Bitwise OR) produto de um ou mais destes valores.

Value Description
0x00 Desativa o scripting pelo Snapshot Agent e utiliza o script de pré-criação de esquema fornecido definido em @creation_script.
0x01 Gera a criação do objeto (CREATE TABLE, CREATE PROCEDURE, e assim sucessivamente). Este é o valor padrão para artigos de procedimentos armazenados.
0x10 Gera um índice agrupado correspondente. Mesmo que esta opção não esteja definida, são gerados índices relacionados com chaves primárias e UNIQUE restrições se já estiverem definidos numa tabela publicada.
0x20 Converte tipos de dados definidos pelo utilizador (UDT) 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 UDT, se uma coluna UDT faz parte da chave primária, ou se uma coluna calculada faz referência a uma coluna UDT.
0x40 Gera índices não agrupados correspondentes. Mesmo que esta opção não esteja definida, são gerados índices relacionados com chaves primárias e UNIQUE restrições se já estiverem definidos numa tabela publicada.
0x80 Replica PRIMARY KEY restrições. Quaisquer índices relacionados com a restrição também são replicados, mesmo que opções 0x10 e 0x40 não estejam ativados.
0x100 Replica os disparadores do utilizador num artigo de tabela, se definido.
0x200 Replica FOREIGN KEY restrições. Se a tabela referenciada não fizer parte de uma publicação, todas FOREIGN KEY as restrições numa tabela publicada não são replicadas.
0x400 Replica CHECK restrições.
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 UNIQUE restrições. Quaisquer índices relacionados com a restrição também são replicados, mesmo que opções 0x10 e 0x40 não estejam ativados.
0x8000 Esta opção não é válida para editores que executam o SQL Server 2005 (9.x) e versões posteriores.
0x10000 Replica CHECK as restrições para NOT FOR REPLICATION que estas não sejam aplicadas durante a sincronização.
0x20000 Replica FOREIGN KEY as restrições para NOT FOR REPLICATION que estas 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 os Bindings por defeito.
0x800000 Replica as 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 Cria 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)) introduzidos no SQL Server 2005 (9.x) para tipos de dados suportados no SQL Server 2000 (8.x).
0x40000000 Replica permissões.
0x80000000 Tentativas de eliminar dependências para quaisquer objetos que não façam parte da publicação.
0x100000000 Use esta opção para replicar o FILESTREAM atributo 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, datetimeoffset 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.

Se este valor for NULL, o sistema gera automaticamente uma opção de esquema válida para o artigo. A tabela de opções de esquema padrão mostra o valor escolhido com base no tipo de artigo. Além disso, nem todos os valores de @schema_option são válidos para todos os tipos de replicação e tipo de artigo. A tabela de opções de Esquema Válido mostra as opções que podem ser especificadas para um dado tipo de artigo.

Note

O parâmetro @schema_option afeta apenas as opções de replicação para o snapshot inicial. Uma vez que o esquema inicial foi gerado pelo Snapshot Agent e aplicado no Assinante, a replicação das alterações do esquema de publicação ao Assinante ocorre com base nas regras de replicação de alterações de esquema e na definição de parâmetro @replicate_ddl especificada em sp_addmergepublication. Para obter mais informações, consulte Alterações de Esquema em Bancos de Dados de Publicação.

[ @subset_filterclause = ] N'subset_filterclause'

Uma cláusula WHERE que especifica o filtragem horizontal de um artigo de tabela sem incluir a palavra WHERE. @subset_filterclause é nvarchar(1000), com o padrão de uma cadeia vazia.

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 HOST_NAME valor, 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.

[ @article_resolver = ] N'article_resolver'

O resolvedor baseado em COM é usado para resolver conflitos no artigo da tabela ou no conjunto do .NET Framework invocado para executar lógica de negócio personalizada no artigo da tabela. @article_resolver é nvarchar(255), com um padrão de NULL. Os valores disponíveis para este parâmetro estão listados nos Microsoft Custom Resolvers. Se o valor fornecido não for um dos resolvers da Microsoft, o SQL Server usa o resolvedor especificado em vez do resolvedor fornecido pelo sistema. Use sp_enumcustomresolvers para enumerar a lista de resolvers personalizados disponíveis. Para mais informações, consulte Executar Lógica de Negócio Durante a Sincronização de Fusão e Replicação Avançada de Fusão - Deteção e Resolução de Conflitos.

[ @resolver_info = ] N'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(517), com um padrão de NULL. Para mais informações, consulte Conflito Avançado de Replicação de Fusão - COM-Based Resolvers.

[ @source_owner = ] N'source_owner'

O nome do proprietário do @source_object. @source_owner é sysname, com o padrão de NULL. Se NULL, assume-se que o utilizador atual é o proprietário.

[ @destination_owner = ] N'destination_owner'

O proprietário do objeto na base de dados de subscrição, se não dbofor . @destination_owner é sysname, com um padrão de NULL. Se NULL, dbo assume-se que é o proprietário.

[ @vertical_partition = ] N'vertical_partition'

Ativa e desativa a filtragem de colunas num artigo de tabela. @vertical_partition é nvarchar(5), com um padrão de false.

  • false indica que não há filtragem vertical e publica todas as colunas.

  • false limpa todas as colunas exceto a chave primária e ROWGUID as colunas declaradas. As colunas são adicionadas usando sp_mergearticlecolumn.

[ @auto_identity_range = ] N'auto_identity_range'

Ativa e desativa o tratamento automático do intervalo de identidade para este artigo de tabela numa publicação no momento em que é criado. @auto_identity_range é nvarchar(5), com um padrão de NULL. false Ativa a gestão automática da distância de identidade, enquanto false a desativa.

Note

Este parâmetro está obsoleto e é mantido para compatibilidade retroativa dos scripts. Deves usar @identityrangemanagementoption para especificar opções de gestão de intervalos de identidade. Para obter mais informações, consulte Replicar colunas de identidade.

[ @pub_identity_range = ] pub_identity_range

Controla o tamanho do intervalo de identidade atribuído a um Assinante com uma subscrição de servidor quando é utilizada a gestão automática do intervalo de identidade. Este intervalo de identidade é reservado para um Assinante que republica para alocar aos seus próprios Assinantes. @pub_identity_range é bigint, com um padrão de NULL. Deve especificar este parâmetro se @identityrangemanagementoption for auto ou se @auto_identity_range for false.

[ @identity_range = ] identity_range

Controla o tamanho do intervalo de identidade atribuído tanto ao Publisher como ao Assinante quando é utilizada a gestão automática do intervalo de identidade. @identity_range é bigint, com um padrão de NULL. Deve especificar este parâmetro se @identityrangemanagementoption for auto ou se @auto_identity_range for false.

Note

@identity_range controla o tamanho do intervalo de identidade ao republicar Subscritores usando versões anteriores do SQL Server.

[ @threshold = ] limiar

Valor percentual que controla quando o Merge Agent atribui um novo intervalo de identidade. Quando a percentagem de valores especificados em @threshold é utilizada, o Merge Agent cria um novo intervalo de identidade. @threshold é int, com um padrão de NULL. Deve especificar este parâmetro se @identityrangemanagementoption for auto ou se @auto_identity_range for false.

[ @verify_resolver_signature = ] verify_resolver_signature

Especifica se uma assinatura digital é verificada antes de usar um resolvedor na replicação por fusão. @verify_resolver_signature é int, com um padrão de 1.

  • 0 especifica que a assinatura não está verificada.

  • 1 especifica que a assinatura é verificada para verificar se vem de uma fonte confiável.

[ @destination_object = ] N'destination_object'

O nome do objeto na base de dados de subscrição. @destination_object é sysname, com um valor padrão do que está no @source_object. Este parâmetro só pode ser especificado se o artigo for apenas de esquema, como procedimentos armazenados, vistas e UDFs. Se o artigo especificado for um artigo de tabela, o valor em @source_object sobrepõe-se ao valor em @destination_object.

[ @allow_interactive_resolver = ] N'allow_interactive_resolver'

Permite ou desativa a utilização do Resolver Interativo num artigo. @allow_interactive_resolver é nvarchar(5), com um padrão de false. false permite a utilização do Resolver Interativo no artigo; false desativa-o.

Note

O Resolver Interativo não é suportado pelos subscritores do SQL Server Compact.

[ @fast_multicol_updateproc = ] N'fast_multicol_updateproc'

Este parâmetro está obsoleto e é mantido para compatibilidade retroativa dos scripts.

[ @check_permissions = ] check_permissions

Um bitmap das permissões ao nível da tabela que são verificadas quando o Merge Agent aplica alterações ao Publisher. 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. @check_permissions é int, e pode ser o | (Bitwise OR) Produto de um ou mais dos seguintes valores.

Value Description
0x00 (padrão) As permissões não são verificadas.
0x10 Verifica as permissões no Publisher antes de as operações de inserção feitas num Assinante poderem ser carregadas.
0x20 Verifica as permissões no Publisher antes de as operações de atualização feitas num assinante poderem ser carregadas.
0x40 Verifica as permissões no Publisher antes de poderem ser carregadas as operações de eliminação feitas num assinante.

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

  • 0 Especifica que adicionar um artigo não torna 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.

  • 1 especifica que adicionar um artigo pode tornar o snapshot inválido e, se existirem subscrições existentes que requerem um novo snapshot, dá permissão para que o snapshot existente seja marcado como obsoleto e gerado um novo snapshot. @force_invalidate_snapshot é definido para 1 quando se adiciona um artigo a uma publicação com um snapshot existente.

[ @published_in_tran_pub = ] N'published_in_tran_pub'

Indica que um artigo numa publicação de fusão também é publicado numa publicação transacional. @published_in_tran_pub é nvarchar(5), com um padrão de false. false especifica que o artigo também é publicado numa publicação transacional.

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

  • 0 Especifica que adicionar um artigo não faz com que a subscrição seja reinicializada. Se o procedimento armazenado detetar que a alteração requer a reinicialização das subscrições existentes, ocorre um erro e não são feitas alterações.

  • 1 significa 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. @force_reinit_subscription é definido para 1 quando @subset_filterclause especifica um filtro de linha parametrizado.

[ @logical_record_level_conflict_detection = ] N'logical_record_level_conflict_detection'

Especifica o nível de deteção de conflito para um artigo que pertence a um registo lógico. @logical_record_level_conflict_detection é nvarchar(5), com um padrão de false.

  • false especifica que um conflito é detetado se forem feitas alterações em qualquer parte do registo lógico.

  • false especifica que a deteção de conflito por defeito é usada conforme especificado por @column_tracking. Para obter mais informações, consulte Agrupar alterações em linhas relacionadas com registros lógicos.

Note

Como os registos lógicos não são suportados por SQL Server Assinantes do Compacto, deve especificar um valor de false para @logical_record_level_conflict_detection para suportar esses Assinantes.

[ @logical_record_level_conflict_resolution = ] N'logical_record_level_conflict_resolution'

Especifica o nível de resolução de conflitos para um artigo que pertence a um registo lógico. @logical_record_level_conflict_resolution é nvarchar(5), com um padrão de false.

  • false especifica que todo o registo lógico vencedor sobrescrive o registo lógico perdedor.

  • false especifica que as linhas vencedoras não estão limitadas ao registo lógico.

Se @logical_record_level_conflict_detection for false, então @logical_record_level_conflict_resolution também deve ser definido como false. Para obter mais informações, consulte Agrupar alterações em linhas relacionadas com registros lógicos.

Note

Como os registos lógicos não são suportados por SQL Server Assinantes do Compacto, deve especificar um valor de false para @logical_record_level_conflict_resolution para suportar esses Assinantes.

[ @partition_options = ] partition_options

Define a forma como os dados do artigo são particionados, o que permite otimizações de desempenho quando todas as linhas pertencem apenas a uma partição ou a uma única subscrição. @partition_options é tinyint e pode ser um dos seguintes valores.

Value Description
0 (padrão) 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 da linguagem de manipulação de dados (DML) feitas no Subscritor 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.

Note

Se a tabela fonte de um artigo já estiver publicada noutra publicação, então o valor de @partition_options deve ser o mesmo para ambos os artigos.

[ @processing_order = ] processing_order

Indica a ordem de processamento dos artigos numa publicação de fusão. @processing_order é int, com um padrão de 0. 0 especifica que o artigo não está ordenado, e qualquer outro valor representa o valor ordinal da ordem de processamento deste artigo. Os artigos são processados por ordem do valor mais baixo para o mais alto. Se dois artigos tiverem o mesmo valor, a ordem de processamento é determinada pela ordem do apelido do artigo na tabela do sistema sysmergearticles . Para mais informações, consulte Especificar propriedades de Replicação de Fusão.

[ @subscriber_upload_options = ] subscriber_upload_options

Define restrições às atualizações feitas num Assinante com uma subscrição de cliente. Para obter mais informações, consulte Otimizar o desempenho da replicação de mesclagem com Download-Only artigos. @subscriber_upload_options é tinyint e pode ser um dos seguintes valores.

Value Description
0 (padrão) Sem restrições. As alterações feitas no Subscritor são carregadas para o Publisher.
1 As alterações são permitidas no Assinante, mas não são carregadas no Publisher.
2 Não são permitidas alterações no Assinante.

Alterar @subscriber_upload_options requer que a subscrição seja reinicializada ligando para sp_reinitmergepullsubscription.

Note

Se a tabela de origem de um artigo já estiver publicada noutra publicação, o valor de @subscriber_upload_options deve ser o mesmo para ambos os artigos.

[ @identityrangemanagementoption = ] N'opção de gestão da identidade'

Especifica como a gestão do intervalo de identidade é tratada para o artigo. @identityrangemanagementoption é nvarchar(10), e pode ser um dos seguintes valores.

Value Description
none Desativa a gestão de intervalos de identidade.
manual Marca a coluna de identidade usando NOT FOR REPLICATION para permitir o tratamento manual do intervalo de identidade.
auto Especifica a gestão automática dos intervalos de identidade.
NULL (padrão) Por defeito, o none valor de @auto_identity_range não trueé .

Para compatibilidade retroativa, quando o valor de @identityrangemanagementoption é NULL, verifica-se o valor de @auto_identity_range . No entanto, quando o valor de @identityrangemanagementoption não NULLé , então o valor de @auto_identity_range é ignorado. Para obter mais informações, consulte Replicar colunas de identidade.

[ @delete_tracking = ] N'delete_tracking'

Indica se as eliminações são replicadas. @delete_tracking é nvarchar(5), com um padrão de true. false indica que as eliminações não são replicadas, e true indica que as eliminações são replicadas, que é o comportamento habitual para a replicação por fusão. Quando @delete_tracking está definido para false, as linhas eliminadas no Assinante devem ser removidas manualmente no Publisher, e as linhas eliminadas no Publisher devem ser removidas manualmente no Assinante.

Importante

Definir @delete_tracking resulta false em não-convergência. Se a tabela de fontes de um artigo já estiver publicada noutra publicação, então o valor de @delete_tracking deve ser o mesmo para ambos os artigos.

Note

@delete_tracking opções não podem ser definidas usando o Assistente de Novas Publicações ou a caixa de diálogo Propriedades de Publicação .

[ @compensate_for_errors = ] N'compensate_for_errors'

Indica se são tomadas ações compensatórias quando são encontrados erros durante a sincronização. @compensate_for_errors é nvarchar(5), com um padrão de false. Quando definidas para true, alterações que não podem ser aplicadas num Assinante ou Publisher durante a sincronização levam sempre a ações compensatórias para reverter a alteração; no entanto, um Assinante mal configurado que gera um erro pode causar alterações noutros Subscritores e Publishers. false desativa estas ações compensatórias, no entanto, os erros continuam registados enquanto a compensação e as fusões subsequentes continuam a tentar aplicar as alterações até serem bem-sucedidas.

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 convergirão. 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.

[ @stream_blob_columns = ] N'stream_blob_columns'

Especifica que uma otimização de fluxo de dados deve ser usada ao replicar colunas binárias de objetos grandes. @stream_blob_columns é nvarchar(5), com um padrão de false. true significa que a otimização será tentada. @stream_blob_columns é definido como verdadeiro 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, use sp_changemergearticle para definir @stream_blob_columns falso.

Importante

Ativar esta otimização de memória pode reduzir o desempenho do Merge Agent durante a sincronização. Esta opção só deve ser usada ao replicar colunas que contenham megabytes de dados.

Note

Certas funcionalidades de replicação de fusão, como registos lógicos, ainda podem impedir que a otimização de fluxos seja usada ao replicar objetos grandes binários, mesmo com @stream_blob_columns definido para true.

Valores de código de retorno

0 (sucesso) ou 1 (fracasso).

Observações

sp_addmergearticle é usado na replicação por fusão.

Quando publicas objetos, as suas definições são copiadas para os Subscritores. Se estiver a publicar um objeto de base de dados que depende de um ou mais outros objetos, deve publicar todos os objetos referenciados. Por exemplo, se publicar uma vista que depende de uma tabela, deve também publicar a tabela.

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 em que 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.

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

Se adicionar um artigo com um filtro horizontal estático, usando @subset_filterclause, a uma publicação existente com artigos com filtros parametrizados, as subscrições têm de ser reiniciadas.

Quando especifica @processing_order, recomendamos deixar lacunas entre os valores da ordem dos artigos, o que facilita a definição de novos valores no futuro. Por exemplo, se tiver três artigos, Article1, Article2, e Article3, definam @processing_order em 10, 20, e 30, em vez de 1, 2, e 3. Para mais informações, consulte Especificar propriedades de Replicação de Fusão.

Tabela de opções de esquema padrão

Esta tabela descreve o valor padrão que o procedimento armazenado define, se for especificado um NULL valor para @schema_option, que depende do tipo de artigo.

Tipo de artigo Valor da opção de esquema
func schema only 0x01
indexed view schema only 0x01
proc schema only 0x01
table 0x0C034FD1- SQL Server 2005 (9.x) e publicações compatíveis posteriores com snapshot em modo nativo.

0x08034FF1- SQL Server 2005 (9.x) e publicações compatíveis posteriores com snapshot em modo de caracteres.
view schema only 0x01

Note

Se a publicação suportar versões anteriores do SQL Server, a opção de esquema padrão para table é 0x30034FF1.

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 @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @table3 AS sysname;
DECLARE @salesschema AS sysname;
DECLARE @hrschema AS sysname;
DECLARE @filterclause AS nvarchar(1000);
SET @publication = N'AdvWorksSalesOrdersMerge'; 
SET @table1 = N'Employee'; 
SET @table2 = N'SalesOrderHeader'; 
SET @table3 = N'SalesOrderDetail'; 
SET @salesschema = N'Sales';
SET @hrschema = N'HumanResources';
SET @filterclause = N'Employee.LoginID = HOST_NAME()';

-- Add a filtered article for the Employee table.
EXEC sp_addmergearticle 
  @publication = @publication, 
  @article = @table1, 
  @source_object = @table1, 
  @type = N'table', 
  @source_owner = @hrschema,
  @schema_option = 0x0004CF1,
  @description = N'article for the Employee table',
  @subset_filterclause = @filterclause;

-- Add an article for the SalesOrderHeader table that is filtered
-- based on Employee and horizontally filtered.
EXEC sp_addmergearticle 
  @publication = @publication, 
  @article = @table2, 
  @source_object = @table2, 
  @type = N'table', 
  @source_owner = @salesschema, 
  @vertical_partition = N'true',
  @schema_option = 0x0034EF1,
  @description = N'article for the SalesOrderDetail table';

-- Add an article for the SalesOrderDetail table that is filtered
-- based on SaledOrderHeader.
EXEC sp_addmergearticle 
  @publication = @publication, 
  @article = @table3, 
  @source_object = @table3, 
  @source_owner = @salesschema,
  @description = 'article for the SalesOrderHeader table', 
  @identityrangemanagementoption = N'auto', 
  @pub_identity_range = 100000, 
  @identity_range = 100, 
  @threshold = 80,
  @schema_option = 0x0004EF1;

-- Add all columns to the SalesOrderHeader article.
EXEC sp_mergearticlecolumn 
  @publication = @publication, 
  @article = @table2, 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Remove the credit card Approval Code column.
EXEC sp_mergearticlecolumn 
  @publication = @publication, 
  @article = @table2, 
  @column = N'CreditCardApprovalCode', 
  @operation = N'drop', 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Add a merge join filter between Employee and SalesOrderHeader.
EXEC sp_addmergefilter 
  @publication = @publication, 
  @article = @table2, 
  @filtername = N'SalesOrderHeader_Employee', 
  @join_articlename = @table1, 
  @join_filterclause = N'Employee.BusinessEntityID = SalesOrderHeader.SalesPersonID', 
  @join_unique_key = 1, 
  @filter_type = 1, 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Add a merge join filter between SalesOrderHeader and SalesOrderDetail.
EXEC sp_addmergefilter 
  @publication = @publication, 
  @article = @table3, 
  @filtername = N'SalesOrderDetail_SalesOrderHeader', 
  @join_articlename = @table2, 
  @join_filterclause = N'SalesOrderHeader.SalesOrderID = SalesOrderDetail.SalesOrderID', 
  @join_unique_key = 1, 
  @filter_type = 1, 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;
GO

Permissions

Requer associação à função de servidor fixa sysadmin ou à função de banco de dados fixa db_owner.