sp_addarticle (Transact-SQL)
Cria um artigo e adiciona-o a uma publicação. Esse procedimento armazenado é executado no Publicador, no banco de dados de publicação.
Convenções de sintaxe Transact-SQL
Sintaxe
sp_addarticle [ @publication = ] 'publication'
, [ @article = ] 'article'
[ , [ @source_table = ] 'source_table' ]
[ , [ @destination_table = ] 'destination_table' ]
[ , [ @vertical_partition = ] 'vertical_partition' ]
[ , [ @type = ] 'type' ]
[ , [ @filter = ] 'filter' ]
[ , [ @sync_object= ] 'sync_object' ]
[ , [ @ins_cmd = ] 'ins_cmd' ]
[ , [ @del_cmd = ] 'del_cmd' ]
[ , [ @upd_cmd = ] 'upd_cmd' ]
[ , [ @creation_script = ] 'creation_script' ]
[ , [ @description = ] 'description' ]
[ , [ @pre_creation_cmd = ] 'pre_creation_cmd' ]
[ , [ @filter_clause = ] 'filter_clause' ]
[ , [ @schema_option = ] schema_option ]
[ , [ @destination_owner = ] 'destination_owner' ]
[ , [ @status = ] status ]
[ , [ @source_owner = ] 'source_owner' ]
[ , [ @sync_object_owner = ] 'sync_object_owner' ]
[ , [ @filter_owner = ] 'filter_owner' ]
[ , [ @source_object = ] 'source_object' ]
[ , [ @artid = ] article_ID OUTPUT ]
[ , [ @auto_identity_range = ] 'auto_identity_range' ]
[ , [ @pub_identity_range = ] pub_identity_range ]
[ , [ @identity_range = ] identity_range ]
[ , [ @threshold = ] threshold ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @use_default_datatypes = ] use_default_datatypes
[ , [ @identityrangemanagementoption = ] identityrangemanagementoption ]
[ , [ @publisher = ] 'publisher' ]
[ , [ @fire_triggers_on_snapshot = ] 'fire_triggers_on_snapshot' ]
Argumentos
[ [ @publication = ] 'publication'
É o nome da publicação que contém o artigo. O nome deve ser exclusivo no banco de dados. publication é sysname, sem padrão.[ @article= ] 'article'
É o nome do artigo. O nome deve ser exclusivo na publicação. article é sysname, sem padrão.[ [ @ source_table = ] 'source_table'
Este parâmetro foi substituído; em lugar dele, use source_object.Esse parâmetro não tem suporte para Publicadores Oracle.
[ [ @ destination_table = ] 'destination_table'
É o nome da tabela de destino (assinatura), se diferente de source_table ou do procedimento armazenado. destination_table é sysname, com um padrão de NULL, o que significa que source_table é igual a destination_table*.*[ [ @vertical_partition = ] 'vertical_partition'
Habilita e desabilita a filtragem de coluna em um artigo de tabela. vertical_partition é nchar(5), com um padrão de FALSE.false indica que não há filtragem vertical e publica todas as colunas.
true limpa todas as colunas exceto a chave primária declarada, colunas anuláveis e sem padrão e colunas fundamentais exclusivas. As colunas são adicionadas por meio de sp_articlecolumn.
[ [ @type = ] 'type'
É o tipo de artigo. type é sysname e pode ser um dos valores a seguir.Valor
Descrição
aggregate schema only
Função de agregação apenas com esquema.
func schema only
Função somente com esquema.
indexed view logbased
Artigo de exibição indexada com base em log. Sem suporte para Publicadores Oracle. Para esse tipo de artigo, a tabela base não precisa ser publicada separadamente.
indexed view logbased manualboth
Artigo de exibição indexada com filtro manual e exibição manual. Essa opção exige que você especifique os parâmetros sync_object e filter. Para esse tipo de artigo, a tabela base não precisa ser publicada separadamente. Sem suporte para Publicadores Oracle.
indexed view logbased manualfilter
Artigo de exibição indexada com filtro manual. Essa opção exige que você especifique os parâmetros sync_object e filter. Para esse tipo de artigo, a tabela base não precisa ser publicada separadamente. Sem suporte para Publicadores Oracle.
indexed view logbased manualview
Artigo de exibição indexada com base em log com exibição manual. Esta opção exige que você especifique o parâmetro sync_object. Para esse tipo de artigo, a tabela base não precisa ser publicada separadamente. Sem suporte para Publicadores Oracle.
indexed view schema only
Indexed view with schema only. Para esse tipo de artigo, a tabela base também deve ser publicada.
logbased (padrão)
Artigo com base em log.
logbased manualboth
Artigo com base em log com filtro manual e exibição manual. Essa opção exige que você especifique os parâmetros sync_object e filter. Sem suporte para Publicadores Oracle.
logbased manualfilter
Artigo com base em log com filtro manual. Essa opção exige que você especifique os parâmetros sync_object e filter. Sem suporte para Publicadores Oracle.
logbased manualview
Artigo com base em log com exibição manual. Esta opção exige que você especifique o parâmetro sync_object. Sem suporte para Publicadores Oracle.
proc exec
Replica a execução do procedimento armazenado para todos os assinantes do artigo. Sem suporte para Publicadores Oracle. É recomendável usar a opção serializable proc exec, em vez de proc exec. Para obter mais informações, consulte a seção "Tipos de artigos de execução de procedimento armazenado" no Publicando execução de procedimento armazenado em replicação transacional. Não disponível quando a opção alterar captura de dados está habilitada.
proc schema only
Procedimento apenas com esquema. Sem suporte para Publicadores Oracle.
serializable proc exec
Replica a execução do procedimento armazenado apenas se ele for executado no contexto de uma transação serializável. Sem suporte para Publicadores Oracle.
Você também deve executar o procedimento dentro de uma transação explícita para a execução de procedimento a ser replicada.
view schema only
Exibição somente com esquema Sem suporte para Publicadores Oracle. Ao usar essa opção, você também deve publicar a tabela base.
[ [ @filter = ] 'filter'
É o procedimento armazenado (criado com FOR REPLICATION) usado para filtrar a tabela horizontalmente. filter é nvarchar(386), com um padrão de NULL. sp_articleview e sp_articlefilter devem ser executados manualmente para criar a exibição e filtrar o procedimento armazenado. Se não for NULL, o procedimento de filtro não é criado (supõe que o procedimento armazenado é criado manualmente).[ [ @sync_object = ] 'sync_object'
É o nome da tabela ou exibição usada para criar o arquivo de dados usado para representar o instantâneo desse artigo. sync_object é nvarchar(386), com um padrão de NULL. Se for NULL, sp_articleview será chamado para criar automaticamente a exibição usada para gerar o arquivo de saída. Isso ocorre depois que qualquer coluna com sp_articlecolumn é adicionada. Se não for NULL, uma exibição não será criada (supõe que a exibição é criada manualmente).[ [ @ins_cmd = ] 'ins_cmd'
É o tipo de comando de replicação usado ao replicar inserções para esse artigo. ins_cmd é nvarchar(255) e pode ser um dos valores a seguir.Valor
Descrição
NONE
Nenhuma ação é tomada.
CALL sp_MSins_table (padrão)
- ou -
CALL custom_stored_procedure_name
Chama um procedimento armazenado a ser executado no Assinante. Para usar esse método de replicação, use schema_option para especificar a criação automática do procedimento armazenado ou para criar o procedimento armazenado especificado no banco de dados de destino de cada Assinante do artigo. custom_stored_procedure é o nome de um procedimento armazenado criado pelo usuário. sp_MSins_table contém o nome da tabela de destino no lugar da parte _table do parâmetro. Quando destination_owner é especificado, ele é pré-demarcado para o nome da tabela de destino. Por exemplo, para a tabela ProductCategory de propriedade do esquema Production no assinante, o parâmetro seria CALL sp_MSins_ProductionProductCategory. Para um artigo em uma topologia de replicação ponto a ponto, _table é acrescentado com um valor de GUID. A especificação de custom_stored_procedure não tem suporte na atualização de assinantes.
SQL ou NULL
Replica uma instrução INSERT. A instrução INSERT fornece valores para todas as colunas publicadas no artigo. Esse comando é replicado em inserções:
INSERT INTO <table name> VALUES (c1value, c2value, c3value, ..., cnvalue)
Para obter mais informações, consulte Especificar como as alterações são propagadas para artigos transacionais.
[ [ @ del_cmd =] 'del_cmd'
É o tipo de comando de replicação usado ao replicar exclusões para esse artigo. del_cmd é nvarchar(255) e pode ser um dos valores a seguir.Valor
Descrição
NONE
Nenhuma ação é tomada.
CALL sp_MSdel_table (padrão)
- ou -
CALL custom_stored_procedure_name
Chama um procedimento armazenado a ser executado no Assinante. Para usar esse método de replicação, use schema_option para especificar a criação automática do procedimento armazenado ou para criar o procedimento armazenado especificado no banco de dados de destino de cada Assinante do artigo. custom_stored_procedure é o nome de um procedimento armazenado criado pelo usuário. sp_MSdel_table contém o nome da tabela de destino no lugar da parte _table do parâmetro. Quando destination_owner é especificado, ele é pré-demarcado para o nome da tabela de destino. Por exemplo, para a tabela ProductCategory de propriedade do esquema Production no assinante, o parâmetro seria CALL sp_MSdel_ProductionProductCategory. Para um artigo em uma topologia de replicação ponto a ponto, _table é acrescentado com um valor de GUID. A especificação de custom_stored_procedure não tem suporte na atualização de assinantes.
XCALL sp_MSdel_table
- ou -
XCALL custom_stored_procedure_name
Chama um procedimento armazenado com o uso de parâmetros no estilo XCALL. Para usar esse método de replicação, use schema_option para especificar a criação automática do procedimento armazenado ou para criar o procedimento armazenado especificado no banco de dados de destino de cada Assinante do artigo. Não é permitido especificar um procedimento armazenado para atualizar assinantes.
SQL ou NULL
Replica uma instrução DELETE. A instrução DELETE é fornecida em todos os valores de coluna de chave primária. Esse comando é replicado em exclusões:
DELETE FROM <table name> WHERE pkc1 = pkc1value AND pkc2 = pkc2value AND pkcn = pkcnvalue
Para obter mais informações, consulte Especificar como as alterações são propagadas para artigos transacionais.
[ [ @upd_cmd =] 'upd_cmd'
É o tipo de comando de replicação usado ao replicar atualizações para esse artigo. upd_cmd é nvarchar(255) e pode ser um dos valores a seguir.Valor
Descrição
NONE
Nenhuma ação é tomada.
CALL sp_MSupd_table
- ou -
CALL custom_stored_procedure_name
Chama um procedimento armazenado a ser executado no Assinante. Para usar esse método de replicação, use schema_option para especificar a criação automática do procedimento armazenado ou para criar o procedimento armazenado especificado no banco de dados de destino de cada Assinante do artigo.
MCALL sp_MSupd_table
- ou -
MCALL custom_stored_procedure_name
Chama um procedimento armazenado com o uso de parâmetros no estilo MCALL. Para usar esse método de replicação, use schema_option para especificar a criação automática do procedimento armazenado ou para criar o procedimento armazenado especificado no banco de dados de destino de cada Assinante do artigo. custom_stored_procedure é o nome de um procedimento armazenado criado pelo usuário. sp_MSupd_table contém o nome da tabela de destino no lugar da parte _table do parâmetro. Quando destination_owner é especificado, ele é pré-demarcado para o nome da tabela de destino. Por exemplo, para a tabela ProductCategory de propriedade do esquema Production no assinante, o parâmetro seria MCALL sp_MSupd_ProductionProductCategory. Para um artigo em uma topologia de replicação ponto a ponto, _table é acrescentado com um valor de GUID. Não é permitido especificar um procedimento armazenado para atualizar assinantes.
SCALL sp_MSupd_table (padrão)
- ou -
SCALL custom_stored_procedure_name
Chama um procedimento armazenado com o uso de parâmetros no estilo SCALL. Para usar esse método de replicação, use schema_option para especificar a criação automática do procedimento armazenado ou para criar o procedimento armazenado especificado no banco de dados de destino de cada Assinante do artigo. custom_stored_procedure é o nome de um procedimento armazenado criado pelo usuário. sp_MSupd_table contém o nome da tabela de destino no lugar da parte _table do parâmetro. Quando destination_owner é especificado, ele é pré-demarcado para o nome da tabela de destino. Por exemplo, para a tabela ProductCategory de propriedade do esquema Production no assinante, o parâmetro seria SCALL sp_MSupd_ProductionProductCategory. Para um artigo em uma topologia de replicação ponto a ponto, _table é acrescentado com um valor de GUID. Não é permitido especificar um procedimento armazenado para atualizar assinantes.
XCALL sp_MSupd_table
- ou -
XCALL custom_stored_procedure_name
Chama um procedimento armazenado com o uso de parâmetros no estilo XCALL. Para usar esse método de replicação, use schema_option para especificar a criação automática do procedimento armazenado ou para criar o procedimento armazenado especificado no banco de dados de destino de cada Assinante do artigo. Não é permitido especificar um procedimento armazenado para atualizar assinantes.
SQL ou NULL
Replica uma instrução UPDATE. A instrução UPDATE é fornecida em todos os valores de coluna e os valores de coluna de chave primária. Esse comando é replicado em atualizações:
UPDATE <table name> SET c1 = c1value, SET c2 = c2value, SET cn = cnvalue WHERE pkc1 = pkc1value AND pkc2 = pkc2value AND pkcn = pkcnvalue
Observação A sintaxe de CALL, MCALL, SCALL e XCALL varia a quantidade de dados propagada ao assinante. A sintaxe de CALL passa todos os valores para todas as colunas inseridas e excluídas. A sintaxe de SCALL passa valores apenas para as colunas afetadas. A sintaxe de XCALL passa valores para todas as colunas, alteradas ou não, inclusive o valor anterior da coluna. Para obter mais informações, consulte Especificar como as alterações são propagadas para artigos transacionais.
[ [ @creation_script =] 'creation_script'
Corresponde ao caminho e ao 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 NULL.[ [ @description=] 'description'
É uma entrada descritiva para o artigo. description é nvarchar(255), com um padrão de NULL.[ [ @pre_creation_cmd =] 'pre_creation_cmd'
Especifica o que o sistema deve fazer se detectar um objeto existente com o mesmo nome no assinante, ao aplicar o instantâneo para esse artigo: pre_creation_cmd é nvarchar(10) e pode ser um dos valores a seguir.Valor
Descrição
none
Não usa um comando.
excluir
Exclui dados da tabela de destino antes de aplicar o instantâneo. Quando o artigo é filtrado horizontalmente, apenas dados em colunas especificadas pela cláusula de filtro são excluídos. Não há suporte para Publicadores Oracle quando um filtro horizontal está definido.
descartar (padrão)
Descarta a tabela de destino.
truncate
Trunca a tabela de destino. Não é válido para assinantes ODBC ou OLE DB.
[ [ @filter_clause=] 'filter_clause'
É uma cláusula de restrição (WHERE) que define um filtro horizontal. Ao inserir a cláusula de restrição, omita a palavra-chave WHERE. filter_clause é ntext, com um padrão de NULL. Para obter mais informações, consulte Filtrar dados publicados.[ [ @schema_option =] schema_option
É um bitmask da opção de geração de esquema para o artigo determinado. schema_option é binary(8) e pode ser o produto | (OR de bit a bit) de um ou mais desses valores.Observação Se esse valor for NULL, o sistema gerará automaticamente uma opção de esquema válida para o artigo dependendo de outras propriedades do artigo. A tabela Opções de Esquema Padrão na seção Comentários mostra o valor escolhido com base na combinação de tipo de artigo e tipo de replicação.
Valor
Descrição
0x00
Desabilita a execução de script pelo Snapshot Agent e usa creation_script.
0x01
Gera o script de criação de objeto (CREATE TABLE, CREATE PROCEDURE e assim por diante). Esse valor é o padrão para artigos de procedimento armazenado.
0x02
Gera os procedimentos armazenados que propagam alterações para o artigo, se definido.
0x04
Os scripts das colunas de identidade são executados com a propriedade IDENTITY.
0x08
Replica colunas timestamp. Se não definidas, as colunas timestamp são replicadas como binary.
0x10
Gera um índice clusterizado correspondente. Mesmo que essa opção não esteja definida, os índices relacionados às chaves primárias e às restrições exclusivas serão gerados caso já estejam definidos em uma tabela publicada.
0x20
Converte UDTs (tipos de dados definidos pelo usuário) em tipos de dados base 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. Sem suporte para Publicadores Oracle.
0x40
Gera índices não clusterizados correspondentes. Mesmo que essa opção não esteja definida, os índices relacionados às chaves primárias e às restrições exclusivas serão gerados caso já estejam definidos em uma tabela publicada.
0x80
Replica restrições de chave primária. 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. Sem suporte para Publicadores Oracle.
0x200
Replica restrições de chave estrangeira. Se a tabela referenciada não for parte de uma publicação, todas as restrições de chave estrangeira em uma tabela publicada não serão replicadas. Sem suporte para Publicadores Oracle.
0x400
Replica restrições de verificação. Sem suporte para Publicadores Oracle.
0x800
Replica padrões. Sem suporte para Publicadores Oracle.
0x1000
Replica agrupamento em nível de coluna.
Observação Essa opção deve ser definida para Publicadores Oracle para habilitar comparações entre letras maiúsculas e minúsculas.
0x2000
Replica propriedades estendidas associadas com o objeto de origem do artigo publicado. Sem suporte para Publicadores Oracle.
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 Publicadores SQL Server 2005.
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 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
Associações padrão
0x800000
Associações de regra
0x1000000
Í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 qualquer esquema ainda não presente 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.
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 do 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.
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 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, 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.
Consulte a opção relacionada 0x100000000.
0x1000000000
Converte UDTs (tipos definidos pelo usuário) de CLR (Common Language Runtime) maiores que 8000 bytes 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 o 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 Criar índices filtrados.
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.
0x20000000000
Replica o atributo SPARSE para colunas. Para obter mais informações sobre esse atributo, consulte Usar colunas esparsas.
NULL
A replicação define schema_option automaticamente como um valor padrão, o valor de qual depende em outras propriedades de artigo. A tabela "Opções de Esquema Padrão" na seção Observações mostra as opções de esquema padrão com base no tipo de artigo e tipo de replicação.
O padrão para não publicações SQL Server é 0x050D3.
Nem todos os valores schema_option são válidos para cada tipo de replicação e tipo de artigo. A tabela Opções de Esquema Válido na seção Observações mostra as opções de esquema válidas que podem ser escolhidas com base na combinação de tipo de artigo e tipo de replicação.
[ [ @destination_owner =] 'destination_owner'
É o nome do proprietário do objeto de destino. destination_owner é sysname, com um padrão de NULL. Quando destination_owner não é especificado, o proprietário é especificado automaticamente baseado nas seguintes regras:Condição
Proprietário do objeto de destino
Publicação usa a cópia em massa do modo nativo para gerar o instantâneo inicial que só aceita assinantes SQL Server.
Assume o valor source_owner como padrão.
Publicado a partir de um não publicador SQL Server.
Assume o proprietário do banco de dados de destino como padrão.
A publicação usa a cópia em massa do modo de caractere para gerar o instantâneo inicial que só aceita assinantes SQL Server.
Não atribuído.
Para oferecer suporte a não assinantes SQL Server, destination_owner deve ser NULL.
[ [ @status=] status
Especifica se o artigo está ativo e opções adicionais sobre como as alterações são propagadas. status é tinyint e pode ser o produto | (Bitwise OR) de um ou mais desses valores.Valor
Descrição
1
O artigo está ativo.
8
Inclui o nome da coluna nas instruções INSERT.
16 (padrão)
Usa instruções parametrizadas.
24
Inclui o nome da coluna nas instruções INSERT e usa instruções parametrizadas.
64
Identificado apenas para fins informativos. Sem suporte. A compatibilidade futura não está garantida.
Por exemplo, um artigo ativo que usa instruções com parâmetros teria um valor 17 nessa coluna. Um valor de 0 significa que o artigo está inativo e nenhuma propriedade adicional está definida.
[ [ @source_owner =] 'source_owner'
É o proprietário do objeto de origem. source_owner é sysname, com um padrão de NULL. source_owner deve ser especificado para Publicadores Oracle.[ [ @sync_object_owner =] 'sync_object_owner'
É o proprietário da exibição que define o artigo publicado. sync_object_owner é sysname, com um padrão de NULL.[ [ @ filter_owner =] 'filter_owner'
É o proprietário do filtro. filter_owner é sysname, com um padrão de NULL.[ [ @source_object =] 'source_object'
É o objeto de banco de dados a ser publicado. source_object é sysname, com um padrão de NULL. Se source_table for NULL, source_object não poderá ser NULL.source_object deve ser usado em vez de source_table. Para obter mais informações sobre os tipos de objetos que podem ser publicados usando replicação de instantâneo ou transacional, consulte Publicar dados e objetos de banco de dados.[ [ @artid = ] article_ID OUTPUT
É a ID do artigo do novo artigo. article_ID é int, com um padrão de NULL, e é um parâmetro de OUTPUT.[ [ @auto_identity_range = ] 'auto_identity_range'
Habilita e desabilita o intervalo de identidade automática em uma publicação no momento em que ela é criada. auto_identity_range é nvarchar(5), e pode ter um dos valores a seguir:Valor
Descrição
true
Ativa a manipulação de intervalo de identidade automática.
false
Desabilita a manipulação de intervalo de identidade automática.
NULL (padrão)
A manipulação de intervalo de identidade é definida por identityrangemanagementoption.
Observaçã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 Replicar colunas de identidade.
[ [ @pub_identity_range = ] pub_identity_range
Controla o tamanho do intervalo no Publicador se o artigo tiver identityrangemanagementoption definido como auto ou auto_identity_range definido como true. pub_identity_range é bigint, com um padrão de NULL. Sem suporte para Publicadores Oracle.[ [ @identity_range = ] identity_range
Controla o tamanho do intervalo no Assinante se o artigo tiver identityrangemanagementoption definido como auto ou auto_identity_range definido como true. identity_range é bigint, com um padrão de NULL. Usado quando auto_identity_range está definido como true. Sem suporte para Publicadores Oracle.[ [ @threshold = ] threshold
É o valor percentual que controla quando o Distribution Agent atribui um novo intervalo de identidade. Quando a porcentagem de valores especificada em threshold é usada, o Agente de Distribuição cria um novo intervalo de identidade. threshold é bigint, com um padrão de NULL. Usado quando identityrangemanagementoption está definido como auto ou auto_identity_range está definido true. Sem suporte para Publicadores Oracle.[ [ @force_invalidate_snapshot = ] force_invalidate_snapshot
Confirma que a ação tomada por esse procedimento armazenado pode invalidar um instantâneo existente. force_invalidate_snapshoté um bit, com 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 exige um novo instantâneo, ocorrerá um erro e nenhuma alteração será feita.
1 especifica que adicionar um artigo pode invalidar o instantâneo e, se houver assinaturas existentes que exigem um novo instantâneo, dará permissão para que o instantâneo existente seja marcado como obsoleto e um novo instantâneo seja gerado.
[ [ @ use_default_datatypes = ] use_default_datatypes
É se os mapeamentos de tipo de dados de coluna padrão são usados ao publicar um artigo de um Publicador Oracle. use_default_datatypes é bit, com um padrão de 1.1 = os mapeamentos de coluna de artigo padrão são usados. Os mapeamentos de tipo de dados padrão podem ser exibidos executando sp_getdefaultdatatypemapping.
0 = mapeamentos de coluna de artigo personalizados estão definidos e, portanto, sp_articleview não é chamado através de sp_addarticle.
Quando use_default_datatypes é definido como 0, você deve executar sp_changearticlecolumndatatype uma vez para cada mapeamento de coluna sendo alterado a partir do padrão. Após todos os mapeamentos de coluna personalizados tiverem sido definidos, você deve executar sp_articleview.
Observação Esse parâmetro só deve ser usado para Publicadores Oracle. Definir use_default_datatypes como 0 para um SQL Server Publicador gera um erro.
[ [ @identityrangemanagementoption = ] identityrangemanagementoption
Especifica como o gerenciamento de intervalo de identidade é tratado para o artigo. identityrangemanagementoption é nvarchar(10) e pode ser um dos valores a seguir.Valor
Descrição
none
A replicação não faz nenhum gerenciamento de intervalo de identidade explícito. Essa opção só é recomendada para compatibilidade com versões anteriores do SQL Server. Não permitido para replicação hierárquica.
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)
Assume none como padrão quando o valor de auto_identity_range não for true. Assume manual como padrão em uma topologia não hierárquica (auto_identity_range é ignorado).
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 Replicar colunas de identidade.
[ @publisher = ] 'publisher'
Especifica um Publicador que não é do SQL Server. publisher é sysname, com um padrão de NULL.Observação publisher não deve ser usado ao adicionar um artigo a um Publicador do SQL Server.
[ [ @ fire_triggers_on_snapshot = ] 'fire_triggers_on_snapshot'
Se os gatilhos de usuário replicados forem executados quando o instantâneo inicial for aplicado. fire_triggers_on_snapshot é nvarchar(5), com um padrão de FALSE. true significa que os gatilhos do usuário em uma tabela replicada são executadas quando o instantâneo é aplicado. Para gatilhos a serem replicados, o valor de bitmask de schema_option deve incluir o valor 0x100.
Valores de código de retorno
0 (êxito) ou 1 (falha)
Comentários
sp_addarticle é usado em replicação de instantâneo ou replicação transacional.
Por padrão, a replicação não publica quaisquer colunas na tabela de origem quando o tipo de dados de coluna não tiver suporte pela replicação. Se você precisar publicar essa coluna, execute sp_articlecolumn para adicionar a coluna.
Ao adicionar um artigo a uma publicação que oferece suporte à replicação transacional não hierárquica, as seguintes restrições se aplicam:
Devem ser especificadas instruções parametrizadas para todos os artigos com base em log. Você deve incluir 16 no valor status.
O nome e proprietário da tabela de destino devem corresponder à tabela de origem.
O artigo não pode ser filtrado horizontal ou verticalmente.
Não há suporte para o gerenciamento de intervalo de identidade automática. Você deve especificar um valor manual para identityrangemanagementoption.
Se uma coluna timestamp existir na tabela, você deve incluir 0x08 na schema_option para replicar a coluna como timestamp.
Um valor de SQL não pode ser especificado para ins_cmd, upd_cmd e del_cmd.
Para obter mais informações, consulte Replicação transacional ponto a ponto.
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 vertical_partition for definido como true, sp_addarticle deferirá a criação da exibição até sp_articleview ser chamado (após o último sp_articlecolumn ser adicionado).
Se a publicação permitir a atualização de assinaturas e a tabela publicada não tiver uma coluna uniqueidentifier, sp_addarticle adicionará uma coluna uniqueidentifier à tabela automaticamente.
Ao replicar para um assinante que não é uma instância do SQL Server (replicação heterogênea), somente instruções Transact-SQL têm suporte para os comandos INSERT, UPDATEe DELETE.
Quando o Agente de Leitor de Log estiver em execução, adicionar um artigo a uma publicação ponto a ponto poderá causar um deadlock entre o Agente de Leitor de Log e o processo que adiciona o artigo. Para evitar esse problema, antes de adicionar um artigo a uma publicação ponto a ponto, use o Monitor de Replicação para interromper o Agente de Leitor de Log no nó onde você está adicionando o artigo. Reinicie o Agente de Leitor de Log depois de adicionar o artigo.
Ao definir @del\_cmd = 'NONE' ou @ins\_cmd = 'NONE', a propagação de comandos UPDATE também poderá ser afetada se esses comandos não forem enviados quando ocorrer uma atualização limitada. (A atualização limitada é o tipo de instrução UPDATE do publicador que se replica como um par DELETE/INSERT no assinante).
Opções de esquema padrão
Essa tabela descreve o valor padrão definido pela replicação se schema_options não for especificado pelo usuário, sendo que esse valor depende do tipo de replicação (mostrado na parte superior) e do tipo de artigo (mostrado no final da primeira coluna).
Tipo de artigo |
Tipo de replicação |
|
---|---|---|
|
Transacional. |
Instantâneo |
aggregate schema only |
0x01 |
0x01 |
func schema only |
0x01 |
0x01 |
indexed view schema only |
0x01 |
0x01 |
indexed view logbased |
0x30F3 |
0x3071 |
indexed view logbase manualboth |
0x30F3 |
0x3071 |
indexed view logbased manualfilter |
0x30F3 |
0x3071 |
indexed view logbased manualview |
0x30F3 |
0x3071 |
logbased |
0x30F3 |
0x3071 |
logbased manualfilter |
0x30F3 |
0x3071 |
logbased manualview |
0x30F3 |
0x3071 |
proc exec |
0x01 |
0x01 |
proc schema only |
0x01 |
0x01 |
serializable proc exec |
0x01 |
0x01 |
view schema only |
0x01 |
0x01 |
Observação |
---|
Se uma publicação for habilitada quanto à atualização em fila, um valor schema_option de 0x80 será adicionado ao valor padrão mostrado na tabela. A schema_option padrão para uma publicação não SQL Server é 0x050D3. |
Opções de esquema válidas
Esta tabela descreve os valores permitidos de schema_option com base no tipo de replicação (mostrados na parte superior) e o tipo de artigo (mostrado na parte inferior da primeira coluna).
Tipo de artigo |
Tipo de replicação |
|
---|---|---|
|
Transacional. |
Instantâneo |
logbased |
Todas as opções |
Todas as opções, exceto 0x02 |
logbased manualfilter |
Todas as opções |
Todas as opções, exceto 0x02 |
logbased manualview |
Todas as opções |
Todas as opções, exceto 0x02 |
indexed view logbased |
Todas as opções |
Todas as opções, exceto 0x02 |
indexed view logbased manualfilter |
Todas as opções |
Todas as opções, exceto 0x02 |
indexed view logbased manualview |
Todas as opções |
Todas as opções, exceto 0x02 |
indexed view logbase manualboth |
Todas as opções |
Todas as opções, exceto 0x02 |
proc exec |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000 |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000 |
serializable proc exec |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000 |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000 |
proc schema only |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000 |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000 |
view schema only |
0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 e 0x80000000 |
0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 e 0x80000000 |
func schema only |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000 |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000 |
indexed view schema only |
0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 e 0x80000000 |
0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 e 0x80000000 |
Observação |
---|
Para publicações de atualização em fila, os valores schema_option de 0x8000 e 0x80 devem ser habilitados. Os valores com suporte schema_option para publicações não SQL Server são: 0x01, 0x02, 0x10, 0x40, 0x80, 0x1000, 0x4000 and 0X8000. |
Exemplo
DECLARE @publication AS sysname;
DECLARE @table AS sysname;
DECLARE @filterclause AS nvarchar(500);
DECLARE @filtername AS nvarchar(386);
DECLARE @schemaowner AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @table = N'Product';
SET @filterclause = N'[DiscontinuedDate] IS NULL';
SET @filtername = N'filter_out_discontinued';
SET @schemaowner = N'Production';
-- Add a horizontally and vertically filtered article for the Product table.
-- Manually set @schema_option to ensure that the Production schema
-- is generated at the Subscriber (0x8000000).
EXEC sp_addarticle
@publication = @publication,
@article = @table,
@source_object = @table,
@source_owner = @schemaowner,
@schema_option = 0x80030F3,
@vertical_partition = N'true',
@type = N'logbased',
@filter_clause = @filterclause;
-- (Optional) Manually call the stored procedure to create the
-- horizontal filtering stored procedure. Since the type is
-- 'logbased', this stored procedures is executed automatically.
EXEC sp_articlefilter
@publication = @publication,
@article = @table,
@filter_clause = @filterclause,
@filter_name = @filtername;
-- Add all columns to the article.
EXEC sp_articlecolumn
@publication = @publication,
@article = @table;
-- Remove the DaysToManufacture column from the article
EXEC sp_articlecolumn
@publication = @publication,
@article = @table,
@column = N'DaysToManufacture',
@operation = N'drop';
-- (Optional) Manually call the stored procedure to create the
-- vertical filtering view. Since the type is 'logbased',
-- this stored procedures is executed automatically.
EXEC sp_articleview
@publication = @publication,
@article = @table,
@filter_clause = @filterclause;
GO
Permissões
Somente membros da função de servidor fixa sysadmin ou da função de banco de dados fixa db_owner podem executar sp_addarticle.
Consulte também
Referência
sp_articlecolumn (Transact-SQL)
sp_articlefilter (Transact-SQL)
sp_changearticle (Transact-SQL)
sp_helparticlecolumns (Transact-SQL)
Procedimentos armazenados de replicação (Transact-SQL)