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.

Ícone de vínculo de tópico 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çãoObservaçã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çãoObservaçã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çãoObservaçã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çãoObservação

    auto_identity_range foi substituído e fornecido apenas para compatibilidade com versões anteriores. Você deve usar identityrangemanagementoption para especificar as opções de gerenciamento do intervalo de identidades. Para obter mais informações, consulte 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çãoObservaçã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çãoObservaçã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çãoObservaçã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çãoObservaçã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_articleview (Transact-SQL)

sp_changearticle (Transact-SQL)

sp_droparticle (Transact-SQL)

sp_helparticle (Transact-SQL)

sp_helparticlecolumns (Transact-SQL)

Procedimentos armazenados de replicação (Transact-SQL)

Conceitos

Defina um Artigo

Publicar dados e objetos de banco de dados