Compartilhar via


sp_addarticle (Transact-SQL)

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

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

Sintaxe

sp_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 precisa 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 tem suporte apenas para compatibilidade com o SQL Server 6.5. Esse parâmetro não tem suporte para Publicadores Oracle.

  • [ @destination_table = ] 'destination_table'
    É o nome da tabela de destino (assinatura), caso seja diferente de source_tableou 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 FALSO.

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

    verdadeiro desmarca 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 colunas usando sp_articlecolumn.

  • [ @type = ] 'type'
    É o tipo de artigo, type é sysnamee pode ser um dos valores a seguir.

    Valor

    Descrição

    apenas esquema agregado

    Função agregada 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.

    exibição indexada com base em log e manual

    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. Esta opção requer 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 requer 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

    Exibição indexada somente com esquema Para esse tipo de artigo, também deve ser publicada a tabela base.

    com base em log (padrão)

    Artigo com base em log.

    logbased manualboth

    Artigo com base em log com filtro manual e exibição manual. Esta opção requer 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 requer 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 requer 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 de transação.

    proc schema only

    Procedimento apenas com esquema. Sem suporte para Publicadores Oracle.

    execução do processo serializável

    Replica a execução do procedimento armazenado apenas se este for executado no contexto de uma transação serializável. Sem suporte para Publicadores Oracle.

    view schema only

    Exibição somente com esquema Sem suporte para Publicadores Oracle. Ao usar esta 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 deve ser executado manualmente para criar a exibição e procedimento armazenado de filtro. Se não for NULL, o procedimento de filtro não é criado (assume-se 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 é chamado para criar automaticamente a exibição usada para gerar o arquivo de saída. Isso acontece depois que qualquer coluna com sp_articlecolumn for adicionada Se não for NULL, uma exibição não é criada (assume-se que a exibição é criada manualmente).

  • [ @ins_cmd = ] 'ins_cmd'
    É o tipo de comando de replicação usado ao replicar inserções no artigo. ins_cmd é nvarchar(255) e pode ser um dos seguintes valores.

    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 de procedimento armazenado ou criar o procedimento armazenado no banco de dados de destino de cada assinante do artigo. custom_stored_procedure é o nome de um procedimento armazenado criado pelo usuário. A tabela sp_MSins_ 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 CategoriaDeProduto de propriedade do esquema Produção 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 GUID. Especificar custom_stored_procedure não é suportado para atualização de assinantes.

    SQL ou NULL

    Reproduz 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 Especificando 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 do artigo. del_cmd é nvarchar(255) e pode ser um dos seguintes valores.

    Valor

    Descrição

    NONE

    Nenhuma ação é tomada.

    CALL sp_MSdel_tabela (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 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. A tabela sp_MSdel_ contém o nome da tabela de destino em 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 CategoriaDeProduto de propriedade do esquema Produção 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 GUID. Especificar custom_stored_procedure não é suportado para atualização de assinantes.

    XCALL sp_MSdel_table

    - ou -

    XCALL custom_stored_procedure_name

    Chama um procedimento armazenado tomando 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 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 Especificando 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 do artigo. upd_cmd é nvarchar(255) e pode ser um dos seguintes valores.

    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 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 tomando 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 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. A tabela sp_MSupd_ 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 CategoriaDeProduto de propriedade do esquema Produção 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 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 tomando 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 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. A tabela sp_MSupd_ 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 CategoriaDeProduto de propriedade do esquema Produção 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 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 tomando 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 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 CALL, MCALL, SCALL e XCALL variam a quantidade de dados propagada ao assinante. A sintaxe CALL passa todos os valores para todas as colunas inseridas e excluídas. A sintaxe SCALL passa valores apenas para as colunas afetadas. A sintaxe XCALL passa valores para todas as colunas, alteradas ou não, inclusive o valor anterior da coluna. Para obter mais informações, consulte Especificando como as alterações são propagadas para Artigos Transacionais.

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

  • [ @description =] 'description'
    É uma entrada descritiva do artigo. description é nvarchar(255), com um padrão 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 seguintes valores.

    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 por Publicadores da Oracle quando um filtro horizontal é 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 is ntext, com um padrão NULL. Para obter mais informações, consulte Filtrando dados publicados.

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

    ObservaçãoObservação

    Se este 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 Observações mostra o valor escolhido com base na combinação de tipo de artigo e tipo de replicação.

    Valor

    Descrição

    0x00

    Desabilita 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 feitos usando 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 se esta opção não estiver definida, os índices relacionados às chaves primárias e as restrições exclusivas são geradas caso já estejam definidas em uma tabela publicada.

    0x20

    Converte UDTs (tipos de dados definidos pelo usuário) em tipos de dados básicos no Assinante. Essa opção não poderá ser usada quando houver uma restrição CHECK ou DEFAULT em uma coluna UDT, se uma coluna UDT for parte da chave primária ou se uma coluna computada fizer referência a uma coluna UDT. Sem suporte para Publicadores Oracle.

    0x40

    Gera índices não clusterizados correspondentes. Mesmo se esta opção não estiver definida, os índices relacionados às chaves primárias e as restrições exclusivas são geradas caso já estejam definidas 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 de 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 com uma tabela ou um índice particionado.

    0x80000

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

    0x100000

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

    0x200000

    Replica estatísticas de tabela.

    0x400000

    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

    Crie esquemas ainda não presentes no assinante.

    0x10000000

    Converte colunas xml em ntext no Assinante.

    0x20000000

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

    0x40000000

    Replica permissões.

    0x80000000

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

    0x100000000

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

    Consulte a opção relacionada 0x800000000.

    0x200000000

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

    0x400000000

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

    0x800000000

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

    Consulte a opção relacionada 0x100000000.

    0x1000000000

    Converte UDTs (tipos definidos pelo usuário) de CLR (Common Language Runtime) 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 tipo de dados hierarchyid em varbinary(max) para que colunas do tipo hierarchyid possam ser replicadas para os Assinantes em execução no SQL Server 2005. Para obter mais informações sobre como usar colunas hierarchyid em tabelas replicadas, consulte hierarchyid (Transact-SQL).

    0x4000000000

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

    0x8000000000

    Converte os tipos de dados geography e geometry em varbinary(max) para que colunas desses tipos 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 Usando 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 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 para como as alterações são propagadas. status é tinyint e pode ser o produto de um ou mais desses valores | (Bitwise OR).

    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 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 NULL.

  • [ @filter_owner =] 'filter_owner'
    É o proprietário do filtro. filter_owner é sysname com um padrão NULL.

  • [ @source_object =] 'source_object'
    É o objeto do banco de dados a ser publicado. source_object é sysname com um padrão 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 Publicando dados e objetos de banco de dados.

  • [ @artid = ] article_ID OUTPUT
    É a ID do novo artigo. article_ID é int com um padrão NULL e é um parâmetro OUTPUT.

  • [ @auto_identity_range = ] 'auto_identity_range'
    Habilita e desabilita o intervalo de identidade automática trabalhando em uma publicação no momento em que ela é criada. auto_identity_range é nvarchar(5) e pode ser um dos seguintes valores:

    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 Colunas de identidade de replicação.

  • [ @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 verdadeiro. pub_identity_range for bigint, com um padrão 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 verdadeiro. identity_range for bigint, com um padrão NULL. Usado quando auto_identity_range for definido como verdadeiro. Sem suporte para Publicadores Oracle.

  • [ @threshold = ] threshold
    É o valor percentual que controla quando o Distribution Agent atribui um novo intervalo de identidade. Quando uma porcentagem de valores especificada em threshold é utilizada, o Distribution Agent cria um novo intervalo de identidade. threshold é bigint, com um padrão NULL. Usado quando identityrangemanagementoption for definido como auto ou auto_identity_range for definido verdadeiro. Sem suporte para Publicadores Oracle.

  • [ @force_invalidate_snapshot = ] force_invalidate_snapshot
    Reconhece que a ação tomada por esse procedimento armazenado pode invalidar um instantâneo existente. force_invalidate_snapshot é um bit, sem um padrão de 0.

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

    1 especifica que 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 do intervalo de identidade é tratado para o artigo. identityrangemanagementoption é nvarchar(10), e pode ser um dos seguintes valores.

    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 NULL, o valor de auto_identity_range é marcado. Porém, quando o valor de identityrangemanagementoption não for NULO, então o valor de auto_identity_range é ignorado.

    Para obter mais informações, consulte Colunas de identidade de replicação.

  • [ @publisher = ] 'publisher'
    Especifica um publicador não SQL Server. publisher é sysname, com um padrão NULL.

    ObservaçãoObservação

    publisher não deve ser usado ao adicionar um artigo a um Editor SQL Server.

  • [ @fire_triggers_on_snapshot = ] 'fire_triggers_on_snapshot'
    É se os gatilhos do usuário replicado são executados quando o instantâneo inicial é aplicado. fire_triggers_on_snapshot é nvarchar(5), com um padrão FALSE. true significa que os gatilhos do usuário em uma tabela replicada são executados 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 tal coluna, você deve executar sp_articlecolumn para adicionar a coluna. Para obter mais informações, consulte Considerações sobre todos os tipos de replicação.

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_cmde del_cmd.

Para obter mais informações, consulte Replicação de 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 verdadeiro, 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.

Opções de esquema padrão

Esta 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

apenas esquema agregado

0x01

0x01

func schema only

0x01

0x01

indexed view schema only

0x01

0x01

exibição indexada com base em log

0x30F3

0x3071

indexed view logbase manualboth

0x30F3

0x3071

exibição indexada com base em log e filtro manual

0x30F3

0x3071

exibição indexada com base em log e manual

0x30F3

0x3071

logbased

0x30F3

0x3071

logbased manualfilter

0x30F3

0x3071

logbased manualview

0x30F3

0x3071

execução do processo

0x01

0x01

proc schema only

0x01

0x01

execução do processo serializável

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

execução do processo serializável

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 e 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.