Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Azure SQL Managed Instance
Adiciona um artigo a uma publicação de fusão existente. Este procedimento armazenado é executado no Publisher no banco de dados de publicação.
Transact-SQL convenções de sintaxe
Syntax
sys.sp_addmergearticle
[ @publication = ] N'publication'
, [ @article = ] N'article'
, [ @source_object = ] N'source_object'
[ , [ @type = ] N'type' ]
[ , [ @description = ] N'description' ]
[ , [ @column_tracking = ] N'column_tracking' ]
[ , [ @status = ] N'status' ]
[ , [ @pre_creation_cmd = ] N'pre_creation_cmd' ]
[ , [ @creation_script = ] N'creation_script' ]
[ , [ @schema_option = ] schema_option ]
[ , [ @subset_filterclause = ] N'subset_filterclause' ]
[ , [ @article_resolver = ] N'article_resolver' ]
[ , [ @resolver_info = ] N'resolver_info' ]
[ , [ @source_owner = ] N'source_owner' ]
[ , [ @destination_owner = ] N'destination_owner' ]
[ , [ @vertical_partition = ] N'vertical_partition' ]
[ , [ @auto_identity_range = ] N'auto_identity_range' ]
[ , [ @pub_identity_range = ] pub_identity_range ]
[ , [ @identity_range = ] identity_range ]
[ , [ @threshold = ] threshold ]
[ , [ @verify_resolver_signature = ] verify_resolver_signature ]
[ , [ @destination_object = ] N'destination_object' ]
[ , [ @allow_interactive_resolver = ] N'allow_interactive_resolver' ]
[ , [ @fast_multicol_updateproc = ] N'fast_multicol_updateproc' ]
[ , [ @check_permissions = ] check_permissions ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @published_in_tran_pub = ] N'published_in_tran_pub' ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @logical_record_level_conflict_detection = ] N'logical_record_level_conflict_detection' ]
[ , [ @logical_record_level_conflict_resolution = ] N'logical_record_level_conflict_resolution' ]
[ , [ @partition_options = ] partition_options ]
[ , [ @processing_order = ] processing_order ]
[ , [ @subscriber_upload_options = ] subscriber_upload_options ]
[ , [ @identityrangemanagementoption = ] N'identityrangemanagementoption' ]
[ , [ @delete_tracking = ] N'delete_tracking' ]
[ , [ @compensate_for_errors = ] N'compensate_for_errors' ]
[ , [ @stream_blob_columns = ] N'stream_blob_columns' ]
[ ; ]
Arguments
[ @publication = ] N'publicação'
O nome da publicação que contém o artigo. @publication é sysname, sem padrão.
[ @article = ] N'artigo'
O nome do artigo. O nome deve ser único dentro da publicação. @article é sysname, sem padrão. @article deve estar no computador local a correr SQL Server e deve cumprir as regras para identificadores.
@source_object [ = ] N'source_object'
O objeto da base de dados a ser publicado. @source_object é sysname, sem predefinição. Para mais informações sobre os tipos de objetos que podem ser publicados usando replicação por fusão, consulte Publicar Dados e Objetos de Base de Dados.
[ @type = ] N'tipo'
O tipo de artigo.
@type é sysname, com um padrão de table, e pode ser um dos seguintes valores.
| Value | Description |
|---|---|
table (padrão) |
Tabela com esquema e dados. A replicação monitoriza a tabela para determinar os dados a serem replicados. |
func schema only |
Função apenas com esquema. |
indexed view schema only |
Vista indexada apenas com esquema. |
proc schema only |
Procedimento armazenado apenas com esquema. |
synonym schema only |
Apenas sinónimo de esquema. |
view schema only |
Visualizar apenas com o esquema. |
[ @description = ] N'descrição'
Uma descrição do artigo.
@description é nvarchar(255), com um padrão de NULL.
[ @column_tracking = ] N'column_tracking'
A definição para o rastreamento ao nível das colunas.
@column_tracking é nvarchar(10), com um padrão de false.
false Ativa o rastreamento da coluna.
false desliga o rastreamento de colunas e deixa a deteção de conflitos ao nível da linha. Se a tabela já estiver publicada noutras publicações de fusão, deve usar o mesmo valor de rastreamento de colunas usado pelos artigos existentes com base nesta tabela. Este parâmetro é específico apenas para artigos de tabelas.
Note
Se o rastreamento de linhas for usado para deteção de conflitos (o padrão), a tabela base pode incluir um máximo de 1.024 colunas, mas as colunas devem ser filtradas do artigo para que seja publicado um máximo de 246 colunas. Se o rastreamento de colunas for usado, a tabela base poderá incluir um máximo de 246 colunas.
[ @status = ] N'estado'
O estado do artigo.
@status é nvarchar(10), com um padrão de unsynced. Se active, o script inicial de processamento para publicar a tabela é executado. Se unsynced, o script inicial de processamento para publicar a tabela é executado na próxima execução do Snapshot Agent.
[ @pre_creation_cmd = ] N'pre_creation_cmd'
Especifica o que o sistema deve fazer se a tabela existir no assinante ao aplicar o snapshot. @pre_creation_cmd é nvarchar(10) e pode ser um dos seguintes valores.
| Value | Description |
|---|---|
none |
Se a tabela já existir no Assinante, não é tomada qualquer ação. |
delete |
Emite uma eliminação com base na cláusula WHERE no filtro de subconjunto. |
drop (padrão) |
Deixa a mesa cair antes de a recriar. Obrigado a suportar assinantes do SQL Server Compact. |
truncate |
Trunca a tabela de destinos. |
[ @creation_script = ] N'creation_script'
O caminho e o nome de um script opcional de esquema de artigo usado para criar o artigo na base de dados de subscrição.
@creation_script é nvarchar(255), com um padrão de NULL.
Note
Os scripts de criação não são executados em subscritores do SQL Server Compact.
[ @schema_option = ] schema_option
Um bitmap da opção de geração de esquemas para o artigo em questão. @schema_option é varbinário(8), e pode ser o | (Bitwise OR) produto de um ou mais destes valores.
| Value | Description |
|---|---|
0x00 |
Desativa o scripting pelo Snapshot Agent e utiliza o script de pré-criação de esquema fornecido definido em @creation_script. |
0x01 |
Gera a criação do objeto (CREATE TABLE, CREATE PROCEDURE, e assim sucessivamente). Este é o valor padrão para artigos de procedimentos armazenados. |
0x10 |
Gera um índice agrupado correspondente. Mesmo que esta opção não esteja definida, são gerados índices relacionados com chaves primárias e UNIQUE restrições se já estiverem definidos numa tabela publicada. |
0x20 |
Converte tipos de dados definidos pelo utilizador (UDT) em tipos de dados base no assinante. Esta opção não pode ser usada quando existe um CHECK ou DEFAULT restrição numa coluna UDT, se uma coluna UDT faz parte da chave primária, ou se uma coluna calculada faz referência a uma coluna UDT. |
0x40 |
Gera índices não agrupados correspondentes. Mesmo que esta opção não esteja definida, são gerados índices relacionados com chaves primárias e UNIQUE restrições se já estiverem definidos numa tabela publicada. |
0x80 |
Replica PRIMARY KEY restrições. Quaisquer índices relacionados com a restrição também são replicados, mesmo que opções 0x10 e 0x40 não estejam ativados. |
0x100 |
Replica os disparadores do utilizador num artigo de tabela, se definido. |
0x200 |
Replica FOREIGN KEY restrições. Se a tabela referenciada não fizer parte de uma publicação, todas FOREIGN KEY as restrições numa tabela publicada não são replicadas. |
0x400 |
Replica CHECK restrições. |
0x800 |
Replica os predefinidos. |
0x1000 |
Replica a colação ao nível da coluna. |
0x2000 |
Replica propriedades estendidas associadas ao objeto fonte do artigo publicado. |
0x4000 |
Replica UNIQUE restrições. Quaisquer índices relacionados com a restrição também são replicados, mesmo que opções 0x10 e 0x40 não estejam ativados. |
0x8000 |
Esta opção não é válida para editores que executam o SQL Server 2005 (9.x) e versões posteriores. |
0x10000 |
Replica CHECK as restrições para NOT FOR REPLICATION que estas não sejam aplicadas durante a sincronização. |
0x20000 |
Replica FOREIGN KEY as restrições para NOT FOR REPLICATION que estas não sejam aplicadas durante a sincronização. |
0x40000 |
Replica grupos de ficheiros associados a uma tabela ou índice particionado. |
0x80000 |
Replica o esquema de partição para uma tabela particionada. |
0x100000 |
Replica o esquema de partição para um índice particionado. |
0x200000 |
Replica estatísticas de tabelas. |
0x400000 |
Replica os Bindings por defeito. |
0x800000 |
Replica as ligações de regras. |
0x1000000 |
Replica o índice do texto completo. |
0x2000000 |
Coleções de esquemas XML ligadas a colunas xml não são replicadas. |
0x4000000 |
Replica índices em colunas xml . |
0x8000000 |
Cria quaisquer esquemas que não estejam já presentes no assinante. |
0x10000000 |
Converte colunas xml em ntext no Assinante. |
0x20000000 |
Converte tipos de dados de objetos grandes (nvarchar(max), varchar(max) e varbinary(max)) introduzidos no SQL Server 2005 (9.x) para tipos de dados suportados no SQL Server 2000 (8.x). |
0x40000000 |
Replica permissões. |
0x80000000 |
Tentativas de eliminar dependências para quaisquer objetos que não façam parte da publicação. |
0x100000000 |
Use esta opção para replicar o FILESTREAM atributo se estiver especificado nas colunas varbinary(max ). Não especifique esta opção se estiver a replicar tabelas para subscritores do SQL Server 2005 (9.x). Replicar tabelas com colunas FILESTREAM para subscritores do SQL Server 2000 (8.x) não é suportado, independentemente de como esta opção de esquema esteja definida. Ver opção 0x800000000relacionada. |
0x200000000 |
Converte tipos de dados de data e hora (data, hora, datetimeoffset e datetime2) introduzidos no SQL Server 2008 (10.0.x) para tipos de dados suportados em versões anteriores do SQL Server. |
0x400000000 |
Replica a opção de compressão para dados e índices. Para obter mais informações, consulte Compactação de dados. |
0x800000000 |
Defina esta opção para armazenar dados FILESTREAM no seu próprio grupo de ficheiros no Assinante. Se esta opção não estiver definida, os dados do FILESTREAM são armazenados no grupo de ficheiros predefinido. A replicação não cria grupos de ficheiros; portanto, se definir esta opção, deve criar o grupo de ficheiros antes de aplicar o snapshot no Subscritor. Para mais informações sobre como criar objetos antes de aplicar o snapshot, consulte Executar Scripts Antes e Depois de o snapshot ser Aplicado. Ver opção 0x100000000relacionada. |
0x1000000000 |
Converte tipos definidos pelo utilizador (UDTs) de common language runtime (CLR) para varbinary(max), de modo que colunas do tipo UDT possam ser replicadas para Assinantes que estejam a correr o SQL Server 2005 (9.x). |
0x2000000000 |
Converte o tipo de dado hierárquido para varbinary(max) para que as colunas do tipo hierárquido possam ser replicadas para os Assinantes que estão a correr o SQL Server 2005 (9.x). Para mais informações sobre como usar colunas hierárquidas em tabelas replicadas, consulte referência de método de tipo de dados hierárquid. |
0x4000000000 |
Replica quaisquer índices filtrados na tabela. Para obter mais informações sobre índices filtrados, consulte Criar índices filtrados. |
0x8000000000 |
Converte os tipos de dados de geografia e geometria para varbinary(max) para que colunas destes tipos possam ser replicadas para Assinantes que estejam a correr o SQL Server 2005 (9.x). |
0x10000000000 |
Replica índices em colunas de geografiae geometria de tipos. |
Se este valor for NULL, o sistema gera automaticamente uma opção de esquema válida para o artigo.
A tabela de opções de esquema padrão mostra o valor escolhido com base no tipo de artigo. Além disso, nem todos os valores de @schema_option são válidos para todos os tipos de replicação e tipo de artigo. A tabela de opções de Esquema Válido mostra as opções que podem ser especificadas para um dado tipo de artigo.
Note
O parâmetro @schema_option afeta apenas as opções de replicação para o snapshot inicial. Uma vez que o esquema inicial foi gerado pelo Snapshot Agent e aplicado no Assinante, a replicação das alterações do esquema de publicação ao Assinante ocorre com base nas regras de replicação de alterações de esquema e na definição de parâmetro @replicate_ddl especificada em sp_addmergepublication. Para obter mais informações, consulte Alterações de Esquema em Bancos de Dados de Publicação.
[ @subset_filterclause = ] N'subset_filterclause'
Uma cláusula WHERE que especifica o filtragem horizontal de um artigo de tabela sem incluir a palavra WHERE. @subset_filterclause é nvarchar(1000), com o padrão de uma cadeia vazia.
Importante
Por razões de desempenho, recomendamos que não aplique funções a nomes de colunas em cláusulas parametrizadas de filtro de linhas, como LEFT([MyColumn]) = SUSER_SNAME(). Se usares HOST_NAME numa cláusula de filtro e sobrescreveres o HOST_NAME valor, podes ter de converter os tipos de dados usando CONVERT. Para mais informações sobre as melhores práticas neste caso, consulte a secção "Overwriting the HOST_NAME() Value" em Parameterized Filters - Parameterized Row Filters.
[ @article_resolver = ] N'article_resolver'
O resolvedor baseado em COM é usado para resolver conflitos no artigo da tabela ou no conjunto do .NET Framework invocado para executar lógica de negócio personalizada no artigo da tabela.
@article_resolver é nvarchar(255), com um padrão de NULL. Os valores disponíveis para este parâmetro estão listados nos Microsoft Custom Resolvers. Se o valor fornecido não for um dos resolvers da Microsoft, o SQL Server usa o resolvedor especificado em vez do resolvedor fornecido pelo sistema. Use sp_enumcustomresolvers para enumerar a lista de resolvers personalizados disponíveis. Para mais informações, consulte Executar Lógica de Negócio Durante a Sincronização de Fusão e Replicação Avançada de Fusão - Deteção e Resolução de Conflitos.
[ @resolver_info = ] N'resolver_info'
Usado para especificar informação adicional exigida por um resolvedor personalizado. Alguns dos Microsoft Resolvers requerem uma coluna fornecida como entrada ao resolvedor.
@resolver_info é nvarchar(517), com um padrão de NULL. Para mais informações, consulte Conflito Avançado de Replicação de Fusão - COM-Based Resolvers.
[ @source_owner = ] N'source_owner'
O nome do proprietário do @source_object.
@source_owner é sysname, com o padrão de NULL. Se NULL, assume-se que o utilizador atual é o proprietário.
[ @destination_owner = ] N'destination_owner'
O proprietário do objeto na base de dados de subscrição, se não dbofor .
@destination_owner é sysname, com um padrão de NULL. Se NULL, dbo assume-se que é o proprietário.
[ @vertical_partition = ] N'vertical_partition'
Ativa e desativa a filtragem de colunas num artigo de tabela.
@vertical_partition é nvarchar(5), com um padrão de false.
falseindica que não há filtragem vertical e publica todas as colunas.falselimpa todas as colunas exceto a chave primária eROWGUIDas colunas declaradas. As colunas são adicionadas usandosp_mergearticlecolumn.
[ @auto_identity_range = ] N'auto_identity_range'
Ativa e desativa o tratamento automático do intervalo de identidade para este artigo de tabela numa publicação no momento em que é criado.
@auto_identity_range é nvarchar(5), com um padrão de NULL.
false Ativa a gestão automática da distância de identidade, enquanto false a desativa.
Note
Este parâmetro está obsoleto e é mantido para compatibilidade retroativa dos scripts. Deves usar @identityrangemanagementoption para especificar opções de gestão de intervalos de identidade. Para obter mais informações, consulte Replicar colunas de identidade.
[ @pub_identity_range = ] pub_identity_range
Controla o tamanho do intervalo de identidade atribuído a um Assinante com uma subscrição de servidor quando é utilizada a gestão automática do intervalo de identidade. Este intervalo de identidade é reservado para um Assinante que republica para alocar aos seus próprios Assinantes.
@pub_identity_range é bigint, com um padrão de NULL. Deve especificar este parâmetro se @identityrangemanagementoption for auto ou se @auto_identity_range for false.
[ @identity_range = ] identity_range
Controla o tamanho do intervalo de identidade atribuído tanto ao Publisher como ao Assinante quando é utilizada a gestão automática do intervalo de identidade.
@identity_range é bigint, com um padrão de NULL. Deve especificar este parâmetro se @identityrangemanagementoption for auto ou se @auto_identity_range for false.
Note
@identity_range controla o tamanho do intervalo de identidade ao republicar Subscritores usando versões anteriores do SQL Server.
[ @threshold = ] limiar
Valor percentual que controla quando o Merge Agent atribui um novo intervalo de identidade. Quando a percentagem de valores especificados em @threshold é utilizada, o Merge Agent cria um novo intervalo de identidade.
@threshold é int, com um padrão de NULL. Deve especificar este parâmetro se @identityrangemanagementoption for auto ou se @auto_identity_range for false.
[ @verify_resolver_signature = ] verify_resolver_signature
Especifica se uma assinatura digital é verificada antes de usar um resolvedor na replicação por fusão.
@verify_resolver_signature é int, com um padrão de 1.
0especifica que a assinatura não está verificada.1especifica que a assinatura é verificada para verificar se vem de uma fonte confiável.
[ @destination_object = ] N'destination_object'
O nome do objeto na base de dados de subscrição. @destination_object é sysname, com um valor padrão do que está no @source_object. Este parâmetro só pode ser especificado se o artigo for apenas de esquema, como procedimentos armazenados, vistas e UDFs. Se o artigo especificado for um artigo de tabela, o valor em @source_object sobrepõe-se ao valor em @destination_object.
[ @allow_interactive_resolver = ] N'allow_interactive_resolver'
Permite ou desativa a utilização do Resolver Interativo num artigo.
@allow_interactive_resolver é nvarchar(5), com um padrão de false.
false permite a utilização do Resolver Interativo no artigo; false desativa-o.
Note
O Resolver Interativo não é suportado pelos subscritores do SQL Server Compact.
[ @fast_multicol_updateproc = ] N'fast_multicol_updateproc'
Este parâmetro está obsoleto e é mantido para compatibilidade retroativa dos scripts.
[ @check_permissions = ] check_permissions
Um bitmap das permissões ao nível da tabela que são verificadas quando o Merge Agent aplica alterações ao Publisher. Se o login/conta de utilizador do Publisher usado pelo processo de fusão não tiver as permissões corretas da tabela, as alterações inválidas são registadas como conflitos. @check_permissions é int, e pode ser o | (Bitwise OR) Produto de um ou mais dos seguintes valores.
| Value | Description |
|---|---|
0x00 (padrão) |
As permissões não são verificadas. |
0x10 |
Verifica as permissões no Publisher antes de as operações de inserção feitas num Assinante poderem ser carregadas. |
0x20 |
Verifica as permissões no Publisher antes de as operações de atualização feitas num assinante poderem ser carregadas. |
0x40 |
Verifica as permissões no Publisher antes de poderem ser carregadas as operações de eliminação feitas num assinante. |
@force_invalidate_snapshot [ = ] force_invalidate_snapshot
Reconhece que a ação tomada por este procedimento armazenado pode invalidar um snapshot existente.
@force_invalidate_snapshot é bit, com um padrão de 0.
0Especifica que adicionar um artigo não torna o snapshot inválido. Se o procedimento armazenado detetar que a alteração requer um novo snapshot, ocorre um erro e não são feitas alterações.1especifica que adicionar um artigo pode tornar o snapshot inválido e, se existirem subscrições existentes que requerem um novo snapshot, dá permissão para que o snapshot existente seja marcado como obsoleto e gerado um novo snapshot. @force_invalidate_snapshot é definido para1quando se adiciona um artigo a uma publicação com um snapshot existente.
[ @published_in_tran_pub = ] N'published_in_tran_pub'
Indica que um artigo numa publicação de fusão também é publicado numa publicação transacional.
@published_in_tran_pub é nvarchar(5), com um padrão de false.
false especifica que o artigo também é publicado numa publicação transacional.
@force_reinit_subscription [ = ] force_reinit_subscription
Reconhece que a ação tomada por este procedimento armazenado pode exigir a reinicialização das subscrições existentes.
@force_reinit_subscription é bit, com um padrão de 0.
0Especifica que adicionar um artigo não faz com que a subscrição seja reinicializada. Se o procedimento armazenado detetar que a alteração requer a reinicialização das subscrições existentes, ocorre um erro e não são feitas alterações.1significa que alterações ao artigo de fusão fazem com que as subscrições existentes sejam reinicializadas e dá permissão para que a reinicialização da subscrição ocorra. @force_reinit_subscription é definido para1quando @subset_filterclause especifica um filtro de linha parametrizado.
[ @logical_record_level_conflict_detection = ] N'logical_record_level_conflict_detection'
Especifica o nível de deteção de conflito para um artigo que pertence a um registo lógico.
@logical_record_level_conflict_detection é nvarchar(5), com um padrão de false.
falseespecifica que um conflito é detetado se forem feitas alterações em qualquer parte do registo lógico.falseespecifica que a deteção de conflito por defeito é usada conforme especificado por @column_tracking. Para obter mais informações, consulte Agrupar alterações em linhas relacionadas com registros lógicos.
Note
Como os registos lógicos não são suportados por SQL Server Assinantes do Compacto, deve especificar um valor de false para @logical_record_level_conflict_detection para suportar esses Assinantes.
[ @logical_record_level_conflict_resolution = ] N'logical_record_level_conflict_resolution'
Especifica o nível de resolução de conflitos para um artigo que pertence a um registo lógico.
@logical_record_level_conflict_resolution é nvarchar(5), com um padrão de false.
falseespecifica que todo o registo lógico vencedor sobrescrive o registo lógico perdedor.falseespecifica que as linhas vencedoras não estão limitadas ao registo lógico.
Se @logical_record_level_conflict_detection for false, então @logical_record_level_conflict_resolution também deve ser definido como false. Para obter mais informações, consulte Agrupar alterações em linhas relacionadas com registros lógicos.
Note
Como os registos lógicos não são suportados por SQL Server Assinantes do Compacto, deve especificar um valor de false para @logical_record_level_conflict_resolution para suportar esses Assinantes.
[ @partition_options = ] partition_options
Define a forma como os dados do artigo são particionados, o que permite otimizações de desempenho quando todas as linhas pertencem apenas a uma partição ou a uma única subscrição. @partition_options é tinyint e pode ser um dos seguintes valores.
| Value | Description |
|---|---|
0 (padrão) |
A filtragem do artigo ou é estática ou não fornece um subconjunto único de dados para cada partição, ou seja, uma partição "sobreposta". |
1 |
As partições sobrepõem-se, e as atualizações da linguagem de manipulação de dados (DML) feitas no Subscritor não podem alterar a partição a que pertence uma linha. |
2 |
A filtragem do artigo produz partições não sobrepostas, mas múltiplos Subscritores podem receber a mesma partição. |
3 |
A filtragem do artigo produz partições não sobrepostas que são únicas para cada subscrição. |
Note
Se a tabela fonte de um artigo já estiver publicada noutra publicação, então o valor de @partition_options deve ser o mesmo para ambos os artigos.
[ @processing_order = ] processing_order
Indica a ordem de processamento dos artigos numa publicação de fusão.
@processing_order é int, com um padrão de 0.
0 especifica que o artigo não está ordenado, e qualquer outro valor representa o valor ordinal da ordem de processamento deste artigo. Os artigos são processados por ordem do valor mais baixo para o mais alto. Se dois artigos tiverem o mesmo valor, a ordem de processamento é determinada pela ordem do apelido do artigo na tabela do sistema sysmergearticles . Para mais informações, consulte Especificar propriedades de Replicação de Fusão.
[ @subscriber_upload_options = ] subscriber_upload_options
Define restrições às atualizações feitas num Assinante com uma subscrição de cliente. Para obter mais informações, consulte Otimizar o desempenho da replicação de mesclagem com Download-Only artigos. @subscriber_upload_options é tinyint e pode ser um dos seguintes valores.
| Value | Description |
|---|---|
0 (padrão) |
Sem restrições. As alterações feitas no Subscritor são carregadas para o Publisher. |
1 |
As alterações são permitidas no Assinante, mas não são carregadas no Publisher. |
2 |
Não são permitidas alterações no Assinante. |
Alterar @subscriber_upload_options requer que a subscrição seja reinicializada ligando para sp_reinitmergepullsubscription.
Note
Se a tabela de origem de um artigo já estiver publicada noutra publicação, o valor de @subscriber_upload_options deve ser o mesmo para ambos os artigos.
[ @identityrangemanagementoption = ] N'opção de gestão da identidade'
Especifica como a gestão do intervalo de identidade é tratada para o artigo. @identityrangemanagementoption é nvarchar(10), e pode ser um dos seguintes valores.
| Value | Description |
|---|---|
none |
Desativa a gestão de intervalos de identidade. |
manual |
Marca a coluna de identidade usando NOT FOR REPLICATION para permitir o tratamento manual do intervalo de identidade. |
auto |
Especifica a gestão automática dos intervalos de identidade. |
NULL (padrão) |
Por defeito, o none valor de @auto_identity_range não trueé . |
Para compatibilidade retroativa, quando o valor de @identityrangemanagementoption é NULL, verifica-se o valor de @auto_identity_range . No entanto, quando o valor de @identityrangemanagementoption não NULLé , então o valor de @auto_identity_range é ignorado. Para obter mais informações, consulte Replicar colunas de identidade.
[ @delete_tracking = ] N'delete_tracking'
Indica se as eliminações são replicadas.
@delete_tracking é nvarchar(5), com um padrão de true.
false indica que as eliminações não são replicadas, e true indica que as eliminações são replicadas, que é o comportamento habitual para a replicação por fusão. Quando @delete_tracking está definido para false, as linhas eliminadas no Assinante devem ser removidas manualmente no Publisher, e as linhas eliminadas no Publisher devem ser removidas manualmente no Assinante.
Importante
Definir @delete_tracking resulta false em não-convergência. Se a tabela de fontes de um artigo já estiver publicada noutra publicação, então o valor de @delete_tracking deve ser o mesmo para ambos os artigos.
Note
@delete_tracking opções não podem ser definidas usando o Assistente de Novas Publicações ou a caixa de diálogo Propriedades de Publicação .
[ @compensate_for_errors = ] N'compensate_for_errors'
Indica se são tomadas ações compensatórias quando são encontrados erros durante a sincronização.
@compensate_for_errors é nvarchar(5), com um padrão de false. Quando definidas para true, alterações que não podem ser aplicadas num Assinante ou Publisher durante a sincronização levam sempre a ações compensatórias para reverter a alteração; no entanto, um Assinante mal configurado que gera um erro pode causar alterações noutros Subscritores e Publishers.
false desativa estas ações compensatórias, no entanto, os erros continuam registados enquanto a compensação e as fusões subsequentes continuam a tentar aplicar as alterações até serem bem-sucedidas.
Importante
Embora os dados nas linhas afetadas possam parecer fora de convergência, assim que corrigir quaisquer erros, podem ser aplicadas alterações e os dados convergirão. Se a tabela fonte de um artigo já estiver publicada noutra publicação, então o valor de @compensate_for_errors deve ser o mesmo para ambos os artigos.
[ @stream_blob_columns = ] N'stream_blob_columns'
Especifica que uma otimização de fluxo de dados deve ser usada ao replicar colunas binárias de objetos grandes.
@stream_blob_columns é nvarchar(5), com um padrão de false.
true significa que a otimização será tentada.
@stream_blob_columns é definido como verdadeiro quando o FILESTREAM está ativado. Isto permite que a replicação dos dados do FILESTREAM funcione de forma ótima e reduza a utilização da memória. Para forçar os artigos da tabela FILESTREAM a não usarem blob streaming, use sp_changemergearticle para definir @stream_blob_columns falso.
Importante
Ativar esta otimização de memória pode reduzir o desempenho do Merge Agent durante a sincronização. Esta opção só deve ser usada ao replicar colunas que contenham megabytes de dados.
Note
Certas funcionalidades de replicação de fusão, como registos lógicos, ainda podem impedir que a otimização de fluxos seja usada ao replicar objetos grandes binários, mesmo com @stream_blob_columns definido para true.
Valores de código de retorno
0 (sucesso) ou 1 (fracasso).
Observações
sp_addmergearticle é usado na replicação por fusão.
Quando publicas objetos, as suas definições são copiadas para os Subscritores. Se estiver a publicar um objeto de base de dados que depende de um ou mais outros objetos, deve publicar todos os objetos referenciados. Por exemplo, se publicar uma vista que depende de uma tabela, deve também publicar a tabela.
Se especificar um valor de 3 para @partition_options:
Só pode haver uma única subscrição para cada partição de dados nesse artigo. Se for criada uma segunda subscrição em que o critério de filtragem da nova subscrição se resolve para a mesma partição da subscrição existente, a subscrição existente é cancelada.
Os metadados são limpos sempre que o Merge Agent é executado e o snapshot particionado expira mais rapidamente. Ao usar esta opção, deve considerar ativar snapshots particionados solicitados pelo assinante. Para mais informações, consulte Criar um Snapshot para uma Publicação de Fusão com Filtros Parametrizados.
Se adicionar um artigo com um filtro horizontal estático, usando @subset_filterclause, a uma publicação existente com artigos com filtros parametrizados, as subscrições têm de ser reiniciadas.
Quando especifica @processing_order, recomendamos deixar lacunas entre os valores da ordem dos artigos, o que facilita a definição de novos valores no futuro. Por exemplo, se tiver três artigos, Article1, Article2, e Article3, definam @processing_order em 10, 20, e 30, em vez de 1, 2, e 3. Para mais informações, consulte Especificar propriedades de Replicação de Fusão.
Tabela de opções de esquema padrão
Esta tabela descreve o valor padrão que o procedimento armazenado define, se for especificado um NULL valor para @schema_option, que depende do tipo de artigo.
| Tipo de artigo | Valor da opção de esquema |
|---|---|
func schema only |
0x01 |
indexed view schema only |
0x01 |
proc schema only |
0x01 |
table |
0x0C034FD1- SQL Server 2005 (9.x) e publicações compatíveis posteriores com snapshot em modo nativo.0x08034FF1- SQL Server 2005 (9.x) e publicações compatíveis posteriores com snapshot em modo de caracteres. |
view schema only |
0x01 |
Note
Se a publicação suportar versões anteriores do SQL Server, a opção de esquema padrão para table é 0x30034FF1.
Tabela de opções de esquema válida
A tabela seguinte descreve os valores permitidos @schema_option dependendo do tipo de artigo.
| Tipo de artigo | Valores das opções de esquema |
|---|---|
func schema only |
0x01 e 0x2000 |
indexed view schema only |
0x01, 0x040, , 0x0100, 0x2000, 0x400000x1000000, e0x200000 |
proc schema only |
0x01 e 0x2000 |
table |
Todas as opções. |
view schema only |
0x01, 0x040, , 0x0100, 0x2000, 0x400000x1000000, e0x200000 |
Examples
DECLARE @publication AS sysname;
DECLARE @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @table3 AS sysname;
DECLARE @salesschema AS sysname;
DECLARE @hrschema AS sysname;
DECLARE @filterclause AS nvarchar(1000);
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @table1 = N'Employee';
SET @table2 = N'SalesOrderHeader';
SET @table3 = N'SalesOrderDetail';
SET @salesschema = N'Sales';
SET @hrschema = N'HumanResources';
SET @filterclause = N'Employee.LoginID = HOST_NAME()';
-- Add a filtered article for the Employee table.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table1,
@source_object = @table1,
@type = N'table',
@source_owner = @hrschema,
@schema_option = 0x0004CF1,
@description = N'article for the Employee table',
@subset_filterclause = @filterclause;
-- Add an article for the SalesOrderHeader table that is filtered
-- based on Employee and horizontally filtered.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table2,
@source_object = @table2,
@type = N'table',
@source_owner = @salesschema,
@vertical_partition = N'true',
@schema_option = 0x0034EF1,
@description = N'article for the SalesOrderDetail table';
-- Add an article for the SalesOrderDetail table that is filtered
-- based on SaledOrderHeader.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table3,
@source_object = @table3,
@source_owner = @salesschema,
@description = 'article for the SalesOrderHeader table',
@identityrangemanagementoption = N'auto',
@pub_identity_range = 100000,
@identity_range = 100,
@threshold = 80,
@schema_option = 0x0004EF1;
-- Add all columns to the SalesOrderHeader article.
EXEC sp_mergearticlecolumn
@publication = @publication,
@article = @table2,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Remove the credit card Approval Code column.
EXEC sp_mergearticlecolumn
@publication = @publication,
@article = @table2,
@column = N'CreditCardApprovalCode',
@operation = N'drop',
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Add a merge join filter between Employee and SalesOrderHeader.
EXEC sp_addmergefilter
@publication = @publication,
@article = @table2,
@filtername = N'SalesOrderHeader_Employee',
@join_articlename = @table1,
@join_filterclause = N'Employee.BusinessEntityID = SalesOrderHeader.SalesPersonID',
@join_unique_key = 1,
@filter_type = 1,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Add a merge join filter between SalesOrderHeader and SalesOrderDetail.
EXEC sp_addmergefilter
@publication = @publication,
@article = @table3,
@filtername = N'SalesOrderDetail_SalesOrderHeader',
@join_articlename = @table2,
@join_filterclause = N'SalesOrderHeader.SalesOrderID = SalesOrderDetail.SalesOrderID',
@join_unique_key = 1,
@filter_type = 1,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
GO
Permissions
Requer associação à função de servidor fixa sysadmin ou à função de banco de dados fixa db_owner.