Partilhar via


sp_addmergearticle (Transact-SQL)

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

Adiciona um artigo a uma publicação existente Esse procedimento armazenado é executado no Publicador, no banco de dados publicador.

Convenções de sintaxe de Transact-SQL

Sintaxe

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' ]
[ ; ]

Argumentos

@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 exclusivo na publicação. @article é sysname, sem padrão. @article deve estar no computador local que executa o SQL Server e deve estar em conformidade com as regras de identificadores.

@source_object [ = ] N'source_object'

O objeto de banco de dados a ser publicado. @source_object é sysname, sem padrão. Para obter mais informações sobre os tipos de objetos que podem ser publicados usando a replicação de mesclagem, consulte Publicar dados e objetos de banco de dados.

@type [ = ] N'tipo'

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

Valor Descrição
table (padrão) Tabela com esquema e dados. A replicação monitora a tabela para determinar os dados a serem replicados.
func schema only Função somente com esquema.
indexed view schema only Exibição indexada somente com esquema
proc schema only Procedimento armazenado somente com esquema.
synonym schema only Sinônimo somente com esquema).
view schema only Exibição somente com 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 configuração para o acompanhamento no nível da coluna. @column_tracking é nvarchar(10), com um padrão de false. false Ativa o rastreamento de colunas. false Desativa o rastreamento de coluna e deixa a detecção de conflitos no nível da linha. 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.

Observação

Se o controle de linha for usado para detecção de conflitos (o padrão), a tabela de base poderá incluir no máximo 1.024 colunas, mas as colunas deverão ser filtradas do artigo de modo que seja publicado no máximo 246 colunas. Se o rastreamento de coluna for usado, a tabela base poderá incluir no máximo 246 colunas.

@status [ = ] N'status'

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

@pre_creation_cmd [ = ] N'pre_creation_cmd'

Especifica o que o sistema deve fazer se a tabela existe no assinante quando aplicar o instantâneo. @pre_creation_cmd é nvarchar(10) e pode ser um dos seguintes valores.

Valor Descrição
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 (padrão) Cancela a tabela antes de recriá-la. Necessário para dar suporte a Assinantes do SQL Server Compact.
truncate Trunca a tabela de destino.

@creation_script [ = ] N'creation_script'

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

Observação

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

@schema_option [ = ] schema_option

Um bitmap da opção de geração de esquema para o artigo fornecido. @schema_option é varbinary(8) e pode ser o | (OU bit a bit) produto de um ou mais desses valores.

Valor Descrição
0x00 Desabilita o script pelo Snapshot Agent e usa o script de pré-criação de esquema fornecido definido no @creation_script.
0x01 Gera a criação do objeto (CREATE TABLE, CREATE PROCEDUREe assim por diante). Esse valor é o padrão para artigos de procedimento armazenado.
0x10 Gera um índice clusterizado correspondente. Mesmo que essa opção não esteja definida, os índices relacionados a chaves primárias e UNIQUE restrições serão gerados se já estiverem definidos em uma tabela publicada.
0x20 Converte UDTs (tipos de dados definidos pelo usuário) em tipos de dados básicos no Assinante. Essa opção não pode ser usada quando há uma restrição CHECK ou DEFAULT em uma coluna UDT, 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. Mesmo que essa opção não esteja definida, os índices relacionados a chaves primárias e UNIQUE restrições serão gerados se já estiverem definidos em uma tabela publicada.
0x80 Replica PRIMARY KEY restrições. Todos os índices relacionados à restrição também são replicados, mesmo que as opções 0x10 e 0x40 não estejam habilitadas.
0x100 Replica gatilhos de usuário em um artigo de tabela, se definido.
0x200 Replica FOREIGN KEY restrições. Se a tabela referenciada não fizer parte de uma publicação, todas as FOREIGN KEY restrições em uma tabela publicada não serão replicadas.
0x400 Replica CHECK restrições.
0x800 Replica padrões.
0x1000 Replica ordenação em nível de coluna.
0x2000 Replica propriedades estendidas associadas com o objeto de origem do artigo publicado.
0x4000 Replica UNIQUE restrições. Todos os índices relacionados à restrição também são replicados, mesmo que as opções 0x10 e 0x40 não estejam habilitadas.
0x8000 Essa opção não é válida para Publicadores que executam o SQL Server 2005 (9.x) e versões posteriores.
0x10000 Replica CHECK restrições NOT FOR REPLICATION para que as restrições não sejam impostas durante a sincronização.
0x20000 Replica FOREIGN KEY restrições NOT FOR REPLICATION para que as restrições não sejam impostas durante a sincronização.
0x40000 Replica grupos de arquivos associados a uma tabela ou índice particionado.
0x80000 Replica o esquema de partição para uma tabela particionada.
0x100000 Replica o esquema de partição para um índice particionado.
0x200000 Replica estatísticas de tabela.
0x400000 Replica associações padrão.
0x800000 Replica associações de regras.
0x1000000 Replica í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 esquemas ainda não 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) em tipos de dados com suporte no SQL Server 2000 (8.x).
0x40000000 Replica permissões.
0x80000000 Tenta descartar dependências para quaisquer objetos que não façam parte da publicação.
0x100000000 Use essa opção para replicar o FILESTREAM atributo se ele for especificado em colunas varbinary(max ). Não especifique essa opção se você estiver replicando tabelas para Assinantes do SQL Server 2005 (9.x). Não há suporte para a replicação de tabelas que têm colunas FILESTREAM para Assinantes do SQL Server 2000 (8.x), independentemente de como essa opção de esquema está definida. Veja a opção 0x800000000relacionada .
0x200000000 Converte tipos de dados de data e hora (data, hora, datetimeoffset e datetime2) introduzidos no SQL Server 2008 (10.0.x) em tipos de dados com suporte em versões anteriores do SQL Server.
0x400000000 Replica a opção de compactação para dados e índices. Para obter mais informações, consulte Compactação de dados.
0x800000000 Defina essa opção para armazenar dados FILESTREAM em seu próprio grupo de arquivos no Assinante. Se essa opção não estiver definida, os dados FILESTREAM serão armazenados no grupo de arquivos padrão. A replicação não cria grupos de arquivos; portanto, se você definir essa opção, deverá criar o grupo de arquivos antes de aplicar o instantâneo no Assinante. Para obter mais informações sobre como criar objetos antes de aplicar o instantâneo, consulte Executar scripts antes e depois da aplicação do instantâneo.

Veja a opção 0x100000000relacionada .
0x1000000000 Converte UDTs (tipos definidos pelo usuário) CLR (Common Language Runtime) 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.

Se esse valor for NULL, o sistema gerará 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 @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 determinado tipo de artigo.

Observação

O parâmetro @schema_option afeta apenas as opções de replicação para o instantâneo inicial. Depois que o esquema inicial tiver sido gerado pelo Snapshot Agent e aplicado no Assinante, a replicação das alterações do esquema de publicação no Assinante ocorrerá com base nas regras de replicação de alteração de esquema e na configuração de parâmetro @replicate_ddl especificada no sp_addmergepublication. Para obter mais informações, consulte Make Schema Changes on Publication Databases (Fazer alterações de esquema em bancos de dados de publicação).

@subset_filterclause [ = ] N'subset_filterclause'

Uma cláusula WHERE especificando a filtragem horizontal de um artigo de tabela sem a palavra WHERE incluída. @subset_filterclause é nvarchar(1000), com um padrão de uma cadeia de caracteres vazia.

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

@article_resolver [ = ] N'article_resolver'

O resolvedor baseado em COM usado para resolver conflitos no artigo da tabela ou o assembly do .NET Framework invocado para executar a lógica de negócios personalizada no artigo da tabela. @article_resolver é nvarchar(255), com um padrão de NULL. Os valores disponíveis para esse parâmetro estão listados em Resolvedores Personalizados da Microsoft. Se o valor fornecido não for um dos resolvedores da Microsoft, o SQL Server usará o resolvedor especificado em vez do resolvedor fornecido pelo sistema. Use sp_enumcustomresolvers para enumerar a lista de resolvedores personalizados disponíveis. Para obter mais informações, consulte Executar lógica de negócios durante a sincronização de mesclagem e Replicação de mesclagem avançada - Detecção e resolução de conflitos.

@resolver_info [ = ] N'resolver_info'

Usado para especificar informações adicionais exigidas por um resolvedor personalizado. Alguns dos Resolvedores da Microsoft exigem uma coluna fornecida como entrada para o resolvedor. @resolver_info é nvarchar(517), com um padrão de NULL. Para obter mais informações, consulte Conflito avançado de replicação de mesclagem – Resolvedores baseados em COM.

@source_owner [ = ] N'source_owner'

O nome do proprietário do @source_object. @source_owner é sysname, com um padrão de NULL. Se NULL, o usuário atual é considerado o proprietário.

@destination_owner [ = ] N'destination_owner'

O proprietário do objeto no banco de dados de assinatura, se não dbo. @destination_owner é sysname, com um padrão de NULL. Se NULL, dbo é considerado o proprietário.

@vertical_partition [ = ] N'vertical_partition'

Habilita e desabilita a filtragem de coluna em um 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'

Habilita e desabilita a manipulação automática de intervalo de identidade para este artigo de tabela em uma publicação no momento em que ela é criada. @auto_identity_range é nvarchar(5), com um padrão de NULL. false Habilita o tratamento automático do intervalo de identidade, enquanto false o desabilita.

Observação

Esse parâmetro foi preterido e é mantido para compatibilidade com versões anteriores de scripts. Você deve usar @identityrangemanagementoption para especificar opções de gerenciamento de intervalo de identidade. Para obter mais informações, consulte Replicar colunas de identidade.

@pub_identity_range [ = ] pub_identity_range

Controla o tamanho do intervalo de identidades alocado a um Assinante com assinatura de servidor quando o gerenciamento automático do intervalo de identidades for usado. Esse intervalo de identidade é reservado para um Assinante de republicação para ser alocado a seus próprios Assinantes. @pub_identity_range é bigint, com um padrão de NULL. Você deve especificar esse parâmetro se @identityrangemanagementoption for auto ou se @auto_identity_range for false.

@identity_range [ = ] identity_range

Controla o tamanho do intervalo de identidades alocado ao Publicador e ao Assinante quando o gerenciamento automático do intervalo é usado. @identity_range é bigint, com um padrão de NULL. Você deve especificar esse parâmetro se @identityrangemanagementoption for auto ou se @auto_identity_range for false.

Observação

@identity_range controla o tamanho do intervalo de identidade na republicação de Assinantes usando versões anteriores do SQL Server.

@threshold [ = ] limiar

Valor de porcentagem que controla quando o Merge Agent atribui um novo intervalo de identidade. Quando a porcentagem de valores especificada em @threshold é usada, o Merge Agent cria um novo intervalo de identidade. @threshold é int, com um padrão de NULL. Você deve especificar esse 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 em replicação de mesclagem. @verify_resolver_signature é int, com um padrão de 1.

  • 0 especifica que a assinatura não é verificada.

  • 1 Especifica que a assinatura é verificada para ver se é de uma fonte confiável.

@destination_object [ = ] N'destination_object'

O nome do objeto no banco de dados de assinatura. @destination_object é sysname, com um valor padrão do que está em @source_object. Este parâmetro é especificado somente se o artigo for um artigo apenas de esquema, como procedimentos armazenados, exibições e UDFs. Se o artigo especificado for um artigo de tabela, o valor em @source_object substituirá o valor em @destination_object.

@allow_interactive_resolver [ = ] N'allow_interactive_resolver'

Habilita ou desabilita o uso do Resolvedor Interativo de um artigo. @allow_interactive_resolver é nvarchar(5), com um padrão de false. false permite o uso do Resolvedor Interativo no artigo; false desativa-o.

Observação

O Resolvedor Interativo não é compatível com Assinantes do SQL Server Compact.

@fast_multicol_updateproc [ = ] N'fast_multicol_updateproc'

Esse parâmetro foi preterido e é mantido para compatibilidade com versões anteriores de scripts.

@check_permissions [ = ] check_permissions

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

Valor Descrição
0x00 (padrão) As permissões não estão marcadas.
0x10 Verifica as permissões no Editor antes que as operações de inserção realizadas em um Assinante possam ser carregadas.
0x20 Verifica as permissões no Publicador antes que as operações de atualização feitas em um Assinante possam ser carregadas.
0x40 Verifica as permissões no Editor antes que as operações de atualização realizadas em um Assinante possam ser carregadas.

@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 adicionar um artigo não faz com que o instantâneo seja inválido. Se o procedimento armazenado detectar que a alteração requer um novo instantâneo, ocorrerá um erro e nenhuma alteração será feita.

  • 1 Especifica que a adição de um artigo pode 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. @force_invalidate_snapshot é definido como 1 ao adicionar um artigo a uma publicação com um instantâneo existente.

@published_in_tran_pub [ = ] N'published_in_tran_pub'

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

@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 adicionar um artigo não faz com que a assinatura seja reinicializada. Se o procedimento armazenado detectar que a alteração requer que as assinaturas existentes sejam reinicializadas, ocorrerá um erro e nenhuma alteração será feita.

  • 1 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. @force_reinit_subscription é definido como 1 quando @subset_filterclause especifica um filtro de linha com parâmetros.

@logical_record_level_conflict_detection [ = ] N'logical_record_level_conflict_detection'

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

  • false Especifica que um conflito será detectado se as alterações forem feitas em qualquer lugar no registro lógico.

  • false Especifica que a detecção de conflito padrão é usada conforme especificado pelo @column_tracking. Para obter mais informações, consulte Agrupar alterações a linhas relacionadas com registros lógicos.

Observação

Como os registros lógicos não têm suporte para Assinantes do SQL Server Compact, você deve especificar um valor de false para @logical_record_level_conflict_detection para dar suporte a esses Assinantes.

@logical_record_level_conflict_resolution [ = ] N'logical_record_level_conflict_resolution'

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

  • false Especifica que todo o registro lógico vencedor substitui o registro lógico perdedor.

  • false Especifica que as linhas vencedoras não são restritas ao registro 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 a linhas relacionadas com registros lógicos.

Observação

Como os registros lógicos não são compatíveis com os Assinantes do SQL Server Compact, você deve especificar um valor de false para @logical_record_level_conflict_resolution para dar suporte a esses Assinantes.

@partition_options [ = ] partition_options

Define a forma pela qual os dados no artigo são particionados, o que habilita otimizações de desempenho quando todas as linhas pertencem a apenas uma partição ou assinatura. @partition_options é tinyint e pode ser um dos seguintes valores.

Valor Descrição
0 (padrão) 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 de DML (linguagem de manipulação de dados) 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 a tabela de origem de um artigo já estiver publicada em outra publicação, o valor de @partition_options deverá ser o mesmo para ambos os artigos.

@processing_order [ = ] processing_order

Indica a ordem de processamento de artigos em uma publicação de mesclagem. @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 para este artigo. Os artigos são processados em ordem crescente de valores. Se dois artigos tiverem o mesmo valor, a ordem de processamento será determinada pela ordem do apelido do artigo na tabela do sistema sysmergearticles . Para obter mais informações, confira propriedades de Especificar Replicação de Mesclagem.

@subscriber_upload_options [ = ] subscriber_upload_options

Define restrições em atualizações realizadas em um Assinante com uma assinatura de cliente. Para obter mais informações, consulte Otimizar o desempenho da replicação de mesclagem com artigos somente para download. @subscriber_upload_options é tinyint e pode ser um dos seguintes valores.

Valor Descrição
0 (padrão) Sem restrições. As alterações feitas no Assinante são carregadas no Publicador.
1 As alterações são permitidas no Assinante, mas não são carregadas no Publicador.
2 As alterações não são permitidas no Assinante.

A alteração @subscriber_upload_options requer que a assinatura seja reinicializada chamando sp_reinitmergepullsubscription (Transact-SQL).

Observação

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

@identityrangemanagementoption [ = ] N'identityrangemanagementoption'

Especifica como o gerenciamento de intervalo de identidade é tratado para o artigo. @identityrangemanagementoption é nvarchar(10) e pode ser um dos seguintes valores.

Valor Descrição
none Desabilita o gerenciamento de intervalo de identidade.
manual Marca a coluna de identidade usando NOT FOR REPLICATION para ativar tratamento de intervalo de identidade manual.
auto Especifica o gerenciamento automático de intervalos de identidade.
NULL (padrão) O padrão é none quando o valor de @auto_identity_range não trueé .

Para compatibilidade com versões anteriores, quando o valor de @identityrangemanagementoption é NULL, o valor de @auto_identity_range é verificado. No entanto, quando o valor de @identityrangemanagementoption não NULLé , 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 exclusões são replicadas. @delete_tracking é nvarchar(5), com um padrão de true. false indica que as exclusões não são replicadas e true indica que as exclusões são replicadas, que é o comportamento usual para replicação de mesclagem. Quando @delete_tracking é definido como false, as linhas excluídas no Assinante devem ser removidas manualmente no Publicador e as linhas excluídas no Publicador devem ser removidas manualmente no Assinante.

Importante

Definir @delete_tracking como false resulta em não convergência. Se a tabela de origem de um artigo já estiver publicada em outra publicação, o valor de @delete_tracking deverá ser o mesmo para ambos os artigos.

Observação

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

@compensate_for_errors [ = ] N'compensate_for_errors'

Indica se ações de compensação são executadas quando são encontrados erros durante a sincronização. @compensate_for_errors é nvarchar(5), com um padrão de false. Quando definido como true, as alterações que não podem ser aplicadas em um Assinante ou Publicador durante a sincronização sempre levam a ações de compensação para desfazer a alteração; no entanto, um Assinante configurado incorretamente que gera um erro pode fazer com que as alterações em outros Assinantes e Publicadores sejam desfeitas. false desabilita essas ações de compensação, no entanto, os erros ainda são registrados como com compensação e as mesclagens subsequentes continuam tentando aplicar as alterações até serem bem-sucedidas.

Importante

Embora os dados nas linhas afetadas pareçam estar fora de convergência, assim que você resolver 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, o valor de @compensate_for_errors deverá ser o mesmo para ambos os artigos.

@stream_blob_columns [ = ] N'stream_blob_columns'

Especifica que uma otimização de fluxo de dados seja 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 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, use sp_changemergearticle para definir @stream_blob_columns como false.

Importante

Habilitar essa 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 contêm megabytes de dados.

Observação

Determinadas funcionalidades de replicação de mesclagem, como registros lógicos, ainda podem impedir que a otimização de fluxo seja usada ao replicar objetos binários grandes, mesmo com @stream_blob_columns definido como true.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Comentários

sp_addmergearticle é usado na replicação de mesclagem.

Quando você publicar objetos, suas definições são copiadas aos Assinantes. Se você estiver publicando um objeto de banco de dados que depende de um ou mais outros objetos, deverá publicar todos os objetos referenciados. Por exemplo, se você publicar uma exibição que depende de uma tabela, terá de publicar a tabela também.

Se você especificar um valor de 3 para @partition_options:

  • Pode 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 for resolvido para a mesma partição como a assinatura existente, a assinatura existente será cancelada.

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

Se você adicionar um artigo com um filtro horizontal estático, usando @subset_filterclause, a uma publicação existente com artigos que têm filtros parametrizados, as assinaturas deverão ser reinicializadas.

Ao especificar @processing_order, recomendamos deixar espaços entre os valores da ordem do artigo, o que facilita a definição de novos valores no futuro. Por exemplo, se você tiver três artigos, , , e Article3, defina @processing_order como 10, 20, e 30, em vez de 1, 2, e 3. Article2Article1 Para obter mais informações, confira propriedades de Especificar Replicação de Mesclagem.

Tabela de opções de esquema padrão

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

Tipo de artigo Valor de 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 posteriores compatíveis com um instantâneo de modo nativo.

0x08034FF1 - Publicações compatíveis com SQL Server 2005 (9.x) e posteriores com um instantâneo de modo de caractere.
view schema only 0x01

Observação

Se a publicação oferecer suporte a versões anteriores do SQL Server, a opção de esquema padrão para table será 0x30034FF1.

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

Permissões

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