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 PROCEDURE e 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 0x800000000 relacionada . |
0x200000000 |
Converte tipos de dados de data e hora (data, hora, datetimeoffset e datetime2) introduzidos no SQL Server 2008 (10.0.x) em tipos de dados com suporte em versões anteriores do SQL Server. |
0x400000000 |
Replica a opção de compactação para dados e índices. Para obter mais informações, 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 0x100000000 relacionada . |
0x1000000000 |
Converte UDTs (tipos definidos pelo usuário) CLR (Common Language Runtime) em varbinary(max) para que as colunas do tipo UDT possam ser replicadas para Assinantes que executam o SQL Server 2005 (9.x). |
0x2000000000 |
Converte o tipo de dados hierarchyid em varbinary(max) para que as colunas do tipo hierarchyid possam ser replicadas para Assinantes que estão executando o SQL Server 2005 (9.x). Para obter mais informações sobre como usar colunas hierarchyid em tabelas replicadas, consulte referência de método de tipo de dados hierarchyid. |
0x4000000000 |
Replica qualquer índice filtrado na tabela. Para obter mais informações sobre índices filtrados, confira Criar índices filtrados. |
0x8000000000 |
Converte os tipos de dados geography e geometry em varbinary(max) para que as colunas desses tipos possam ser replicadas para Assinantes que estão executando o SQL Server 2005 (9.x). |
0x10000000000 |
Replica índices em colunas do tipo geography e geometry. |
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 eROWGUID
as colunas declaradas. As colunas são adicionadas usandosp_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 como1
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 como1
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
. Article2
Article1
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 .