sp_addmergearticle (Transact-SQL)

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

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

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

Argumentos

  • [ @publication= ] 'publication'
    É o nome da publicação que contém o artigo. publication é sysname, sem padrão.

  • [ @article= ] 'article'
    É o nome do artigo. O nome deve ser exclusivo dentro da publicação. article é sysname, sem padrão. article deve estar executando no computador local Microsoft SQL Server, e deve estar em conformidade com as regras dos identificadores.

  • [ @source_object= ] 'source_object'
    É o objeto do 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 replicação de mesclagem, veja Publicando dados e objetos de banco de dados.

  • [ @type= ] 'type'
    É o tipo de artigo. type é sysname, com um padrão de tabela, e pode ser um dos valores a seguir.

    Valor

    Descrição

    tabela (padrão)

    Tabela com esquema e dados. A replicação monitora a tabela para determinar os dados a serem replicados.

    apenas esquema de funcionamento

    Função somente com esquema.

    somente esquemade exibição indexada

    Exibição indexada somente com esquema

    somente esquema proc

    Procedimento armazenado somente com esquema.

    synonym schema only

    Sinônimo somente com esquema).

    view schema only

    Exibição somente com esquema

  • [ @description= ] 'description'
    É uma descrição do artigo. description é nvarchar(255), com um padrão NULL.

  • [ @column_tracking= ] 'column_tracking'
    É a definição do controle do nível de coluna. column_tracking é nvarchar(10), com o padrão de FALSO. trueativa o controle da coluna. false desativa o controle da coluna e deixa a detecção de conflitos a nível de 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çãoObservaçã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 controle de colunas for usado, a tabela base poderá incluir no máximo 246 colunas. Para obter mais informações sobre o nível de controle, consulte a seção "Nível de Controle" do Como a replicação de mesclagem detecta e soluciona conflitos.

  • [ @status= ] 'status'
    É o status do artigo. status é nvarchar(10), com um valor padrão de unsynced. Se ativo, o script de processamento inicial para publicação da tabela será executado. Se unsynced, o script de processamento inicial para publicar a tabela é executado da próxima vez que o Snapshot Agent é executado.

  • [ @pre_creation_cmd= ] '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 destes valores.

    Valor

    Descrição

    nenhum

    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.

    descartar(padrão)

    Cancela a tabela antes de recriá-la. Exigido no suporte a Assinantes do Microsoft SQL Server Compact 3.5 SP2.

    truncar

    Trunca a tabela de destino.

  • [ @creation_script= ] 'creation_script'
    É o caminho e nome de um script de esquema de artigo opcional usados para criar o artigo no banco de dados de assinatura. creation_script é nvarchar(255), com um padrão de NULO.

    ObservaçãoObservação

    Scripts de criação em Assinantes SQL Server Compact 3.5 SP2não são executados

  • [ @schema_option= ] schema_option
    O bitmap da opção schema generation para o artigo determinado. schema_option é binary(8), e pode ser o | (Bitwise OR) produto de um ou mais desses valores.

    Valor

    Descrição

    0x00

    Desabilita execução de script pelo Snapshot Agent e usa 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 por diante). Esse valor é o padrão para artigos de procedimento armazenado.

    0x10

    Gera um índice clusterizado correspondente. Mesmo se esta opção não estiver definida, os índices relacionados às chaves primárias e as restrições UNIQUE são geradas caso já estejam definidas 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 poderá ser usada quando houver uma restrição CHECK ou DEFAULT em uma coluna UDT, se uma coluna UDT for parte da chave primária ou se uma coluna computada fizer referência a uma coluna UDT.

    0x40

    Gera índices não clusterizados correspondentes. Mesmo se esta opção não estiver definida, os índices relacionados às chaves primárias e as restrições UNIQUE são geradas caso já estejam definidas em uma tabela publicada.

    0x80

    Replica restrições PRIMARY KEY. Qualquer índice relacionado à restrição é também replicado, mesmos e as opções 0x10 e 0x40 não estiverem habilitadas.

    0x100

    Replica gatilhos de usuário em um artigo de tabela, se definido.

    0x200

    Replica restrições FOREIGN KEY. Se a tabela referenciada não for parte de uma publicação, todas as restrições FOREIGN KEY em uma tabela publicada não serão replicadas.

    0x400

    Replica restrições CHECK.

    0x800

    Replica padrões.

    0x1000

    Replica agrupamento de nível de coluna.

    0x2000

    Replica propriedades estendidas associadas com o objeto de origem do artigo publicado.

    0x4000

    Replica restrições UNIQUE. Qualquer índice relacionado à restrição é também replicado, mesmos e as opções 0x10 e 0x40 não estiverem habilitadas.

    0x8000

    Esta opção não é válida para Editores que executam SQL Server 2005 ou versões posteriores.

    0x10000

    Replica instruções CHECK como NOT FOR REPLICATION para que as restrições não sejam forçadas durante a sincronização.

    0x20000

    Replica instruções FOREIGN KEY como NOT FOR REPLICATION para que as restrições não sejam forçadas durante a sincronização.

    0x40000

    Replica grupos de arquivos associados com uma tabela ou um índice particionado.

    0x80000

    Replica o esquema de partição para uma tabela particionada.

    0x100000

    Replica o esquema de partição para um índice particionado.

    0x200000

    Replica estatísticas de tabela.

    0x400000

    Replica associações padrão.

    0x800000

    Replica associações de regra.

    0x1000000

    Replica índice de texto completo.

    0x2000000

    Coleções de esquema CXML associadas a colunas xml não são replicadas.

    0x4000000

    Replica índices em colunas xml.

    0x8000000

    Cria esquemas ainda não presentes no assinante.

    0x10000000

    Converte colunas xml em ntext no Assinante.

    0x20000000

    Converte tipos de dados de objeto grande (nvarchar(max), varchar(max) e varbinary(max)) introduzidos no SQL Server 2005 em tipos de dados com suporte no SQL Server 2000. Para obter informações sobre como esses tipos são mapeados, consulte a seção “Mapeando novos tipos de dados para versões anteriores”, em Usando várias versões do SQL Server em uma topologia de replicação.

    0x40000000

    Replica permissões.

    0x80000000

    Tenta descartar dependências de qualquer objeto que não faz parte da publicação.

    0x100000000

    Use essa opção para replicar o atributo FILESTREAM, se ele for especificado em colunas varbinary(max). Não especifique essa opção se você estiver replicando tabelas para Assinantes SQL Server 2005. A replicação de tabelas com colunas FILESTREAM para Assinantes do SQL Server 2000 não tem suporte, independentemente de como essa opção de esquema é definida. Consulte a opção relacionada 0x800000000.

    0x200000000

    Converte tipos de dados de data e hora (date, time, datetimeoffset e datetime2) que foram introduzidos no SQL Server 2008 em tipos de dados com suporte nas versões anteriores do SQL Server. Para obter informações sobre como esses tipos são mapeados, consulte a seção “Mapeando novos tipos de dados para versões anteriores”, em Usando várias versões do SQL Server em uma topologia de replicação.

    0x400000000

    Replica a opção de compressão para dados e índices. Para obter mais informações, consulte Criando tabelas e índices compactados.

    0x800000000

    Defina essa opção para armazenar dados FILESTREAM em seu próprio grupo de arquivos no Assinante. Se esta opção não for definida, os dados FILESTREAM serão armazenados no grupo de arquivos padrão. A replicação não cria grupos de arquivos; portanto, se você definir essa opção, terá de criar o grupo de arquivos antes de aplicar o instantâneo no Assinante. Para obter mais informações sobre como criar objetos antes de aplicar o instantâneo, consulte Executando scripts antes ou depois que o instantâneo é aplicado.

    Consulte a opção relacionada 0x100000000.

    0x1000000000

    Converte UDTs (tipos definidos pelo usuário) de CLR (Common Language Runtime) em varbinary(max) para que as colunas do tipo UDT possam ser replicadas para os Assinantes em execução no SQL Server 2005.

    0x2000000000

    Converte tipo de dados hierarchyid em varbinary(max) para que colunas do tipo hierarchyid possam ser replicadas para os Assinantes em execução no SQL Server 2005. Para obter mais informações sobre como usar colunas hierarchyid em tabelas replicadas, consulte hierarchyid (Transact-SQL).

    0x4000000000

    Reproduz qualquer índice filtrado na tabela. Para obter mais informações sobre índices filtrados, consulte Diretrizes de criação de índice filtrado.

    0x8000000000

    Converte tipo de dados geography e geometry para que colunas do tipo varbinary(max) possam ser replicadas para os Assinantes em execução no SQL Server 2005.

    0x10000000000

    Replica índices em colunas do tipo geography e geometry.

    Se este valor for NULO, o sistema gera automaticamente uma opção de esquema válida para o artigo. A tabela Opção de Esquema Padrão na seção Observações mostra o valor escolhido com base no tipo de artigo. Também, nem todos os schema_option são válidos para cada tipo de replicação e tipo de artigo. A tabela Opção de Esquema Válido fornecida nas Observações mostra as opções que são especificadas para um determinado tipo de artigo.

    ObservaçãoObservação

    O parâmetro schema_option só afeta opções de replicação para o instantâneo inicial. Quando o Snapshot Agent tiver gerado o esquema inicial e tiver aplicado o mesmo no Assinante, a replicação do esquema de publicação é alterada para Assinante que ocorreu com base nas regras de replicação das alterações de esquema e na configuração de parâmetro replicate_ddl especificadas em sp_addmergepublication. Para obter mais informações, consulte Fazendo alterações de esquema em bancos de dados de publicação.

  • [ @subset_filterclause= ] 'subset_filterclause'
    Há uma cláusula WHERE especificando a filtragem horizontal de um artigo de tabela sem ter a palavra WHERE incluída. subset_filterclause é do nvarchar(1000), sem o padrão de uma cadeia de caracteres vazia.

    Observação importanteImportante

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

  • [ @article_resolver= ] 'article_resolver'
    O resolvedor baseado em COM é usado para resolver conflitos no artigo da tabela ou o assembly do .NET Framework é chamado para executar a lógica de negócios personalizada no artigo de tabela. article_resolver é varchar(255), com o padrão de NULO. São listados valores disponíveis para este parâmetro em Microsoft Resolvedores Personalizados. Se o valor fornecido não for um dos Microsoft resolvedores, o SQL Server usa o resolvedor especificado ao invés do resolvedor fornecido pelo sistema. Use sp_enumcustomresolvers para enumerar a lista de determinadores personalizados disponíveis. Para obter mais informações, consulte Executando lógica comercial durante sincronizações de mesclagem e Detecção e resolução de conflito de replicação de mesclagem avançada.

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

  • [ @source_owner= ] 'source_owner'
    É o nome do proprietário do source_object. source_owner é sysname, com o padrão de NULO. Se NULO, presume-se que o usuário atual seja o proprietário.

  • [ @destination_owner= ] 'destination_owner'
    É o proprietário do objeto no banco de dados de assinaturas, se não for 'dbo'. destination_owner é sysname, com o padrão de NULO. Se NULo, presume-se que o 'dbo' é o proprietário.

  • [ @vertical_partition= ] 'column_filter'
    Habilita e desabilita a filtragem de coluna em um artigo de tabela. vertical_partition é nvarchar(5) com um padrão de FALSO.

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

    true desmarca todas as colunas exceto as chave declarara como primária e as colunas ROWGUID. Colunas são adicionadas usando sp_mergearticlecolumn.

  • [ @auto_identity_range= ] 'automatic_identity_range'
    Habilita e desabilita o manuseio automático da faixa de identidades para este artigo de tabela em uma publicação no momento de sua criação. auto_identity_range é nvarchar(5), com um padrão de FALSE. true habilita o manuseio automático da faixa de identidades, enquanto false o desabilita.

    ObservaçãoObservação

    auto_identity_range foi substituído e fornecido apenas para compatibilidade com versões anteriores. Você deve usar identityrangemanagementoption para especificar as opções de gerenciamento do intervalo de identidades. Para obter mais informações, consulte Colunas de identidade de replicação.

  • [ @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 aos seus próprios Assinantes. pub_identity_range é bigint, com um padrão de NULO. Você deve especificar este parâmetro se identityrangemanagementoption for auto ou se auto_identity_range for true.

  • [ @identity_range= ] identity_range
    Controla o tamanho do intervalo de identidades alocado ao Publicador e ao Assinante quando o gerenciamento automático do intervalor é usado. identity_range é bigint, com um padrão de NULO. Você deve especificar este parâmetro se identityrangemanagementoption for auto ou se auto_identity_range for true.

    ObservaçãoObservação

    O identity_range controla o tamanho do intervalo de identidades nos Assinantes de republicação que usam versões anteriores do SQL Server.

  • [ @threshold= ] threshold
    Valor de porcentagem que controla quando o Merge Agent atribui um novo intervalo de identidade. Quando a porcentagem de valores especificada em threshold é utilizada, o Merge Agent cria um novo intervalo de identidade. threshold é int, com um padrão de NULO. Você deve especificar este parâmetro se identityrangemanagementoption for auto ou se auto_identity_range for true.

  • [ @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 será verificada.

    1 especifica que a assinatura será verificada para consultar se for de uma origem de confiança.

  • [ @destination_object= ] 'destination_object'
    É o nome do objeto no banco de dados de assinaturas. destination_object é sysname, com o valor padrão do que está no @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 anulará o valor em destination_object.

  • [ @allow_interactive_resolver= ] 'allow_interactive_resolver'
    Habilita e desabilita o uso do Resolvedor Interativo em um artigo. allow_interactive_resolver é nvarchar(5), com um padrão de FALSO. true habilita o uso do Resolvedor Interativo no artigo; false o desabilita.

    ObservaçãoObservação

    O Resolvedor Interativo não tem o suporte dos Assinantes SQL Server Compact 3.5 SP2.

  • [ @fast_multicol_updateproc= ] '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 do nível de tabela que são verificadas quando o Merge Agent aplica alterações ao Editor. Se a conta de usuário/login do Editor usado pelo processo de mesclagem não tiver as permissões de tabela corretas, as alterações inválidas são registradas como conflitos. check_permissions é int, e pode ser o | (Bitwise OR) produto de um ou mais dos seguintes valores.

    Valor

    Descrição

    0x00 (padrão)

    As permissões não são verificadas.

    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 Editor antes que as operações de atualização realizadas 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
    Reconhece que a ação tomada por esse procedimento armazenado pode invalidar um instantâneo existente. force_invalidate_snapshot é um bit, sem um padrão de 0.

    0 especifica que a adição de um artigo não invalida o instantâneo. Se o procedimento armazenado detectar que a alteração requer um novo instantâneo, ocorrerá um erro e nenhuma alteração será feita.

    1 especifica que a adição de um artigo pode invalidar o instantâneo e se houver assinaturas existentes que exigem um novo instantâneo, permitirá que o instantâneo existente seja marcado como obsoleto e um novo instantâneo seja gerado. force_invalidate_snapshot é definido como 1 quando for adicionar um artigo a uma publicação com um instantâneo existente.

  • [ @published_in_tran_pub= ] 'published_in_tran_pub'
    Indica que um artigo em publicação de mesclagem é também publicado em uma publicação transacional. published_in_tran_pub é nvarchar(5), com um padrão de FALSO. true especifica que o artigo é também publicado em uma publicação transacional.

  • [ @force_reinit_subscription= ] force_reinit_subscription
    Reconhece que a ação tomada por esse procedimento armazenado pode requerer que as assinaturas existentes sejam reinicializadas. force_reinit_subscription é um bit, com um padrão de 0.

    0 especifica que o a adição de um artigo não causa a reinicialização da assinatura. Se o procedimento armazenado detectar que a alteração irá requerer que as assinaturas existentes sejam reiniciadas, ocorrerá um erro e nenhuma alteração será feita.

    1 especifica que alterações no artigo de mesclagem causarão a reinicialização de assinaturas existentes e dá permissão para que ocorra a reinicialização da assinatura. force_reinit_subscription é definido para 1 quando subset_filterclause especifica um filtro de linha parametrizado.

  • [ @logical_record_level_conflict_detection= ] 'logical_record_level_conflict_detection'
    Especifica o nível de detecção de conflito para um artigo membro de um registro lógico. logical_record_level_conflict_detection é nvarchar(5), com um padrão de FALSO.

    true especifica que um conflito será detectado se alterações forem feitas em um lugar no registro lógico.

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

    ObservaçãoObservação

    Como os registros lógicos não são suportados pelos Assinantes SQL Server Compact 3.5 SP2, será necessário especificar um valor de false para logical_record_level_conflict_detection para dar suporte a esses Assinantes.

  • [ @logical_record_level_conflict_resolution= ] 'logical_record_level_conflict_resolution'
    Especifica o nível de resolução de conflito para um artigo membro de um registro lógico. logical_record_level_conflict_resolution é nvarchar(5), com um padrão de FALSO.

    true especifica que todo o registro lógico vencedor substituirá 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 true, então logical_record_level_conflict_resolution também deverá ser definido como true. Para obter mais informações, consulte Agrupando alterações a linhas relacionadas com registros lógicos.

    ObservaçãoObservação

    Como os registros lógicos não são suportados pelos Assinantes SQL Server Compact 3.5 SP2, será necessário 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 valores a seguir.

    Valor

    Descrição

    0 (padrão)

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

    1

    As partições são sobrepostas e as atualizações de linguagem de manipulação de dados (DML) feitas ao Assinante não podem alterar a partição à qual uma linha pertence.

    2

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

    3

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

    ObservaçãoObservação

    Se a tabela de origem de um artigo já estiver publicada em outra publicação, então o valor partition_options deverá ser o mesmo para os dois 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 tiver o mesmo valor, a ordem de processamento será definida pela ordem do nome fantasia do artigo na tabela do sistema sysmergearticles. Para obter mais informações, consulte Especificando a ordem de processamento dos artigos 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 Otimizando o desempenho de replicação de mesclagem com artigos de somente 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.

    ObservaçãoObservação

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

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

    Valor

    Descrição

    nenhum

    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.

    NULO (padrão)

    Usa como padrão quando none o valor de auto_identity_range não for true.

    Para compatibilidade com versões anteriores, quando o valor de identityrangemanagementoption for NULO, o valor de auto_identity_range é verificado. Porém, quando o valor de identityrangemanagementoption não for NULO, então o valor de auto_identity_range é ignorado. Para obter mais informações, consulte Colunas de identidade de replicação.

  • [ @delete_tracking= ] 'delete_tracking'
    Indica se as exclusões são replicadas. delete_tracking é nvarchar(5), com um padrão de VERDADEIRO. false indica que as exclusões não são replicadas, e true indica que as exclusões são replicadas, o que é o comportamento normal para a replicação de mesclagem. Quando o valor delete_tracking é definido como false, linhas excluídas no Assinante devem ser removidas manualmente no Publicador, e linhas excluídas no Publicador devem ser removidas manualmente no Assinante.

    Observação importanteImportante

    Definindo delete_tracking como false resulta em non-convergência. Se a tabela de origem de um artigo já estiver publicada em outra publicação, então o valor delete_tracking deverá ser o mesmo para os dois artigos.

    ObservaçãoObservação

    Opções delete_tracking que usam o Novo Assistente de Publicação ou a caixa de diálogo Propriedades da Publicação não podem ser definidas.

  • [ @compensate_for_errors= ] 'compensate_for_errors'
    Indicará se ações compensatórias são tomadas quando são encontrados erros durante sincronização. compensate_for_errors is nvarchar(5), com um padrão de FALSO. Quando definido como true, as alterações que não podem ser aplicadas a um Assinante ou Publicador durante a sincronização resultam sempre em ações compensatórias para desfazer a alteração, porém, um Assinantes configurado de modo incorreto que gera um erro poderá causar alterações em outros Assinantes e Publicadores a serem desfeitos. false desabilita essas ações compensatórias, porém os erros continuam sendo registrados como com compensação e as mesclagens subsequentes continuam tentando aplicar as alterações até serem bem sucedidas.

    ObservaçãoObservação

    Para as assinaturas pull nos Assinantes executando Microsoft SQL Server 2000 versão 8.00.858 e anteriores (incluindo o Service Pack 3SP3), as ações compensatórias ocorrerão mesmo com compensate_for_errors definido para false.

    Observação importanteImportante

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

  • [ @stream_blob_columns= ] 'stream_blob_columns'
    Especifica que uma otimização de fluxo de dados deve ser usada ao replicar colunas de objetos binários grandes. stream_blob_columns é nvarchar(5), com um padrão FALSE. true significa que a otimização será tentada. stream_blob_columns será definido como true quando FILESTREAM estiver habilitado. Isso permite a replicação de dados FILESTREAM para executar da maneira ideal e reduzir a utilização de memória. Para forçar os artigos de tabela FILESTREAM a não usarem o fluxo de blob, use sp_changemergearticle para definir stream_blob_columns como false.

    Observação importanteImportante

    A habilitação dessa 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çãoObservação

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

Valores de código de retorno

0 (êxito) ou 1 (falha)

Comentários

sp_addmergearticle é usado em 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 outros objetos, precisará 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, poderá haver apenas uma única assinatura para cada partição de dados naquele artigo. Se uma segunda assinatura for criada na qual o critério de filtragem da nova assinatura for resolvido para a mesma partição como a assinatura existente, a assinatura existente será cancelada.

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

Adicionando um artigo com um filtro estático horizontal, usando subset_filterclause, a uma publicação existente com artigos que têm filtros parametrizados, requer que as assinaturas sejam reinicializadas.

Ao especificar processing_order, recomendamos deixar intervalos entre os valores da ordem do artigo, o que tornará mais fácil a definição de novos valores no futuro. Por exemplo, se tiver três artigos Artigo1, Artigo2, e Artigo3, processing_order definidos como 10, 20, e 30, ao invés de 1, 2, e 3. Para obter mais informações, consulte Especificando a ordem de processamento dos artigos de mesclagem.

Tabela de opção de esquema padrão

Esta tabela descreve o valor padrão definido pelo procedimento armazenado se um valor NULO for especificado para schema_option, que depende do tipo de artigo.

Tipo de artigo

Valor de opção de esquema

apenas esquema de função

0x01

apenas esquema de exibição indexada

0x01

apenas esquema de processamento

0x01

tabela

  • 0x0C034FD1 - SQL Server 2005 e publicações compatíveis posteriores com um instantâneo de modo nativo.

  • 0x08034FF1 - SQL Server 2005 e publicações compatíveis posteriores com um instantâneo de modo de caractere.

  • 0x30034FF1 - SQL Server 2000 e publicações compatíveis anteriores.

apenas esquema de exibição

0x01

ObservaçãoObservação

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

Tabela de opção de esquema válida

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

Tipo de artigo

Valores de opção de esquema

apenas esquema de funcionamento

0x01 e 0x2000

apenas esquema de exibição indexada

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

apenas esquema de processamento

0x01 e 0x2000

tabela

Todas as opções.

apenas esquema de exibição

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

Exemplo

DECLARE @publication AS sysname;
DECLARE @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.