Partilhar via


sp_addarticle (Transact-SQL)

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure

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

Convenções de sintaxe de Transact-SQL

Sintaxe

sp_addarticle
    [ @publication = ] N'publication'
    , [ @article = ] N'article'
    [ , [ @source_table = ] N'source_table' ]
    [ , [ @destination_table = ] N'destination_table' ]
    [ , [ @vertical_partition = ] N'vertical_partition' ]
    [ , [ @type = ] N'type' ]
    [ , [ @filter = ] N'filter' ]
    [ , [ @sync_object = ] N'sync_object' ]
    [ , [ @ins_cmd = ] N'ins_cmd' ]
    [ , [ @del_cmd = ] N'del_cmd' ]
    [ , [ @upd_cmd = ] N'upd_cmd' ]
    [ , [ @creation_script = ] N'creation_script' ]
    [ , [ @description = ] N'description' ]
    [ , [ @pre_creation_cmd = ] N'pre_creation_cmd' ]
    [ , [ @filter_clause = ] N'filter_clause' ]
    [ , [ @schema_option = ] schema_option ]
    [ , [ @destination_owner = ] N'destination_owner' ]
    [ , [ @status = ] status ]
    [ , [ @source_owner = ] N'source_owner' ]
    [ , [ @sync_object_owner = ] N'sync_object_owner' ]
    [ , [ @filter_owner = ] N'filter_owner' ]
    [ , [ @source_object = ] N'source_object' ]
    [ , [ @artid = ] artid OUTPUT ]
    [ , [ @auto_identity_range = ] N'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 = ] N'identityrangemanagementoption' ]
    [ , [ @publisher = ] N'publisher' ]
    [ , [ @fire_triggers_on_snapshot = ] N'fire_triggers_on_snapshot' ]
[ ; ]

Argumentos

@publication [ = ] N'publicação'

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 [ = ] N'artigo'

O nome do artigo. O nome deve ser exclusivo na publicação. @article é sysname, sem padrão.

@source_table [ = ] N'source_table'

Esse parâmetro foi preterido; use @source_object em vez disso. @source_table é nvarchar(386), com um padrão de NULL. @source_table não é compatível com Publicadores Oracle.

@destination_table [ = ] N'destination_table'

O nome da tabela de destino (assinatura), se diferente do @source_table ou do procedimento armazenado. @destination_table é sysname, com um padrão de NULL. Se definido como NULL, isso significa que @source_table é igual a @destination_table.

@vertical_partition [ = ] N'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 sem padrão e colunas de chave exclusiva. As colunas são adicionadas usando sp_articlecolumn.

@type [ = ] N'tipo'

O tipo de artigo. @type é sysname, com um padrão de NULL, e pode ser um dos seguintes valores.

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 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 manualfilter Artigo de exibição indexada com filtro manual. Essa 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. Essa 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, 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 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. Essa 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. Recomendamos que você use a opção serializable proc exec em vez de proc exec. Para obter mais informações, consulte a seção "Tipos de execução de procedimento armazenado" em Publicando a execução de procedimento armazenado na 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 somente se ele for executado dentro do contexto de uma transação serializável. Sem suporte para Publicadores Oracle.

O procedimento também deve ser executado dentro de uma transação explícita para que a execução do procedimento seja 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 [ = ] N'filtro'

O procedimento armazenado (criado com FOR REPLICATION) usado para filtrar a tabela horizontalmente. @filter é nvarchar(386), com um padrão de NULL. Você deve executar sp_articleview e sp_articlefilter manualmente para criar o procedimento armazenado de exibição e filtro. Caso contrário NULL, o procedimento de filtro não será criado (pressupõe que o procedimento armazenado seja criado manualmente).

@sync_object [ = ] N'sync_object'

O nome da tabela ou exibição usada para produzir o arquivo de dados usado para representar o instantâneo deste artigo. @sync_object é nvarchar(386), com um padrão de NULL. Se NULL, sp_articleview é chamado para criar automaticamente a exibição usada para gerar o arquivo de saída. Isso ocorre após a adição de colunas com sp_articlecolumn. Caso contrário NULL, uma exibição não será criada (pressupõe que a exibição seja criada manualmente).

@ins_cmd [ = ] N'ins_cmd'

O tipo de comando de replicação usado ao replicar inserções para este 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 do procedimento armazenado ou crie 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 é anexado ao nome da tabela de destino. Por exemplo, para a ProductCategory tabela de propriedade do Production esquema 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. Não há suporte para especificar <custom_stored_procedure> para atualizar assinantes.
SQL ou NULL Replica uma INSERT instrução. A INSERT instrução 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 Artigos transacionais - Especificar como as alterações são propagadas.

@del_cmd [ = ] N'del_cmd'

O tipo de comando de replicação usado ao replicar exclusões para este artigo. @del_cmd é nvarchar(255) e pode ser um dos seguintes valores.

Valor Descrição
NONE Nenhuma ação é tomada.
CALLsp_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 crie 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 é anexado ao nome da tabela de destino. Por exemplo, para a ProductCategory tabela de propriedade do Production esquema 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. Não há suporte para especificar <custom_stored_procedure> para atualizar assinantes.
XCALL sp_MSdel_<table>

-ou-

XCALL <custom_stored_procedure_name>
Chama um procedimento armazenado usando XCALL parâmetros de estilo. Para usar esse método de replicação, use @schema_option para especificar a criação automática do procedimento armazenado ou crie o procedimento armazenado especificado no banco de dados de destino de cada Assinante do artigo. A especificação de um procedimento armazenado criado pelo usuário não é permitida para atualizar assinantes.
SQL ou NULL Replica uma DELETE instrução. A DELETE instrução é fornecida com 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 Artigos transacionais - Especificar como as alterações são propagadas.

@upd_cmd [ = ] N'upd_cmd'

O tipo de comando de replicação usado ao replicar atualizações para este 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 crie 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 usando MCALL parâmetros de estilo. Para usar esse método de replicação, use @schema_option para especificar a criação automática do procedimento armazenado ou crie 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 <table> parte do parâmetro. Quando @destination_owner é especificado, ele é anexado ao nome da tabela de destino. Por exemplo, para a ProductCategory tabela de propriedade do Production esquema 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. A especificação de um procedimento armazenado criado pelo usuário não é permitida para atualizar assinantes.
SCALL sp_MSupd_<table> (padrão)

-ou-

SCALL <custom_stored_procedure_name>
Chama um procedimento armazenado usando SCALL parâmetros de estilo. Para usar esse método de replicação, use @schema_option para especificar a criação automática do procedimento armazenado ou crie 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 é anexado ao nome da tabela de destino. Por exemplo, para a ProductCategory tabela de propriedade do Production esquema 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. A especificação de um procedimento armazenado criado pelo usuário não é permitida para atualizar assinantes.
XCALL sp_MSupd_<table>

-ou-

XCALL <custom_stored_procedure_name>
Chama um procedimento armazenado usando XCALL parâmetros de estilo. Para usar esse método de replicação, use @schema_option para especificar a criação automática do procedimento armazenado ou crie o procedimento armazenado especificado no banco de dados de destino de cada Assinante do artigo. A especificação de um procedimento armazenado criado pelo usuário não é permitida para atualizar assinantes.
SQL ou NULL Replica uma UPDATE instrução. A UPDATE instrução é fornecida em todos os valores de coluna e nos 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 para CALL, MCALL, SCALLe XCALL varia a quantidade de dados propagados para o assinante. A CALL sintaxe passa todos os valores para todas as colunas inseridas e excluídas. A SCALL sintaxe passa valores apenas para colunas afetadas. A XCALL sintaxe passa valores para todas as colunas, alteradas ou não, incluindo o valor anterior da coluna. Para obter mais informações, consulte Artigos transacionais - Especificar como as alterações são propagadas.

@creation_script [ = ] N'creation_script'

O caminho e o nome de um script de esquema de artigo opcional usado para criar o artigo no banco de dados de assinatura. @creation_script é nvarchar(255), com um padrão de NULL.

@description [ = ] N'descrição'

Uma entrada descritiva para o artigo. @description é nvarchar(255), com um padrão de NULL.

@pre_creation_cmd [ = ] N'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.
delete 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.
drop (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 [ = ] N'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 é nvarchar(max), com um padrão de NULL. Para obter mais informações, consulte Filter Published Data (Filtrar dados publicados).

@schema_option [ = ] schema_option

Uma máscara de bits da opção de geração de esquema para o artigo fornecido. @schema_option é varbinary(8), com um padrão de NULL, e pode ser o | (OU bit a bit) produto de um ou mais destes 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. As opções de esquema padrão mostram o valor que será escolhido com base na combinação do tipo de artigo e do tipo de replicação.

Valor Descrição
0x00 Desabilita o script do 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 Replicar colunas de carimbo de data/hora . Se não for definido, as colunas de carimbo de data/hora serão replicadas como binárias.
0x10 Gera um índice clusterizado correspondente. Mesmo que essa opção não esteja definida, os índices relacionados a chaves primárias e restrições exclusivas serão gerados se já estiverem definidos em uma tabela publicada.
0x20 1 Converte UDTs (tipos de dados definidos pelo usuário) em tipos de dados básicos no Assinante. Essa opção não pode ser usada quando há uma restrição CHECK ou DEFAULT em uma coluna UDT, se uma coluna UDT fizer parte da chave primária ou se uma coluna computada fizer referência a uma coluna UDT.
0x40 Gera índices não clusterizados correspondentes. Mesmo que essa opção não esteja definida, os índices relacionados a chaves primárias e restrições exclusivas serão gerados se já estiverem definidos em uma tabela publicada.
0x80 Replica restrições de chave primária. Todos os índices relacionados à restrição também são replicados, mesmo que as opções 0x10 e 0x40 não estejam habilitadas.
0x100 1 Replica gatilhos de usuário em um artigo de tabela, se definido.
0x200 1 Replica restrições de chave estrangeira. Se a tabela referenciada não fizer parte de uma publicação, todas as restrições de chave estrangeira em uma tabela publicada não serão replicadas.
0x400 1 Replica restrições de verificação.
0x800 1 Replica padrões.
0x1000 Replica ordenação em nível de coluna.

Observação: essa opção deve ser definida para que os Publicadores Oracle habilitem comparações que diferenciam maiúsculas de minúsculas.
0x2000 1 Replica propriedades estendidas associadas com o objeto de origem do artigo publicado.
0x4000 Replica restrições UNIQUE. Todos os índices relacionados à restrição também são replicados, mesmo que as opções 0x10 e 0x40 não estejam habilitadas.
0x8000 Essa opção não é válida para Publicadores do SQL Server 2005 (9.x).
0x10000 Replica as restrições CHECK como NOT FOR REPLICATION para que as restrições não sejam impostas durante a sincronização.
0x20000 Replica restrições FOREIGN KEY como NOT FOR REPLICATION para que as restrições não sejam impostas durante a sincronização.
0x40000 Replica grupos de arquivos associados a uma tabela ou índice particionado.
0x80000 Replica o esquema de partição para uma tabela particionada.
0x100000 Replica o esquema de partição para um índice particionado.
0x200000 Replica estatísticas de tabela.
0x400000 Associações padrão.
0x800000 Associações de regras.
0x1000000 Índice de texto completo.
0x2000000 As coleções de esquema XML associadas a colunas xml não são replicadas.
0x4000000 Replica índices em colunas xml .
0x8000000 Cria qualquer esquema ainda não presente no assinante.
0x10000000 Converte colunas xml em ntext no Assinante.
0x20000000 Converte tipos de dados de objetos grandes (nvarchar(max), varchar(max) e varbinary(max)) introduzidos no SQL Server 2005 (9.x) em tipos de dados com suporte no SQL Server 2000 (8.x).
0x40000000 Replicar permissões.
0x80000000 Tente descartar dependências para quaisquer objetos que não façam 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 (9.x). Não há suporte para a replicação de tabelas que têm colunas FILESTREAM para Assinantes do SQL Server 2000 (8.x), independentemente de como essa opção de esquema está definida.

Consulte a opção relacionada 0x800000000.
0x200000000 Converte tipos de dados de data e hora (data, hora, datetimeoffset e datetime2) introduzidos no SQL Server 2008 (10.0.x) em tipos de dados com suporte em versões anteriores do SQL Server.
0x400000000 Replica a opção de compactação para dados e índices. Para obter mais informações, veja Compactação de dados.
0x800000000 Defina essa opção para armazenar dados FILESTREAM em seu próprio grupo de arquivos no Assinante. Se essa opção não estiver definida, os dados FILESTREAM serão armazenados no grupo de arquivos padrão. A replicação não cria grupos de arquivos; portanto, se você definir essa opção, deverá criar o grupo de arquivos antes de aplicar o instantâneo no Assinante. Para obter mais informações sobre como criar objetos antes de aplicar o instantâneo, consulte Executar scripts antes e depois da aplicação do instantâneo.

Consulte a opção relacionada 0x100000000.
0x1000000000 Converte UDTs (tipos definidos pelo usuário) CLR (Common Language Runtime) maiores que 8000 bytes em varbinary(max) para que as colunas do tipo UDT possam ser replicadas para Assinantes que executam o SQL Server 2005 (9.x).
0x2000000000 Converte o tipo de dados hierarchyid em varbinary(max) para que as colunas do tipo hierarchyid possam ser replicadas para Assinantes que estão executando o SQL Server 2005 (9.x). Para obter mais informações sobre como usar colunas hierarchyid em tabelas replicadas, consulte hierarchyid.
0x4000000000 Replica qualquer índice filtrado na tabela. Para obter mais informações sobre índices filtrados, confira Criar índices filtrados.
0x8000000000 Converte os tipos de dados geography e geometry em varbinary(max) para que as colunas desses tipos possam ser replicadas para Assinantes que estão executando o SQL Server 2005 (9.x).
0x10000000000 Replica índices em colunas do tipo geography e geometry.
0x20000000000 Replica o atributo SPARSE para colunas. Para obter mais informações sobre esse atributo, consulte Usar colunas esparsas.
0x40000000000 Habilite o script pelo agente de instantâneo para criar uma tabela com otimização de memória no assinante.
0x80000000000 Converte o índice clusterizado em índice não clusterizado para artigos com otimização de memória.
0x400000000000 Replica todos os índices columnstore não clusterizados na(s) tabela(s)
0x800000000000 Replica todos os índices columnstore não clusterizados filtrados na(s) tabela(s).
NULL A replicação define automaticamente @schema_option como um valor padrão, cujo valor depende de outras propriedades do 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 publicações não SQL Server é 0x050D3.

1 Não suportado para Publicadores Oracle.

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 Comentários mostra as opções de esquema válidas que podem ser escolhidas com base na combinação do tipo de artigo e do tipo de replicação.

@destination_owner [ = ] N'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 com base nas seguintes regras:

Condição Proprietário do objeto de destino
A publicação usa a cópia em massa no modo nativo para gerar o instantâneo inicial, que só dá suporte a Assinantes do SQL Server. O padrão é o valor de @source_owner.
Publicado de um Publicador que não seja do SQL Server. Assume o proprietário do banco de dados de destino como padrão.
A publicação usa a cópia em massa no modo de caractere para gerar o instantâneo inicial, que oferece suporte a Assinantes não SQL Server. Não atribuído.

Para oferecer suporte a Assinantes não-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 é minúsculo e pode ser o | (OU bit a bit) produto de um ou mais desses valores.

Valor Descrição
1 O artigo está ativo.
8 Inclui o nome da coluna em INSERT instruções.
16 (padrão) Usa instruções parametrizadas.
24 Inclui o nome da coluna em INSERT instruções e usa instruções parametrizadas.
64 Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.

Por exemplo, um artigo ativo usando instruções parametrizadas teria um valor de 17 nesta coluna. Um valor de 0 significa que o artigo está inativo e nenhuma propriedade adicional está definida.

@source_owner [ = ] N'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 [ = ] N'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 [ = ] N'filter_owner'

O proprietário do filtro. @filter_owner é sysname, com um padrão de NULL.

@source_object [ = ] N'source_object'

O objeto de banco de dados a ser publicado. @source_object é sysname, com um padrão de NULL. Se @source_table é NULL, @source_object não pode 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 instantâneo ou replicação transacional, consulte Publicar dados e objetos de banco de dados.

@artid [ = ] SAÍDA artid

O ID do artigo do novo artigo. @artid é um parâmetro OUTPUT do tipo int.

@auto_identity_range [ = ] N'auto_identity_range'

Habilita e desabilita o tratamento automático de intervalo de identidade 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 do intervalo de identidade é definida por @identityrangemanagementoption.

Observação

@auto_identity_range foi preterido e é fornecido apenas para compatibilidade com versões anteriores. Você deve usar @identityrangemanagementoption para especificar opções de gerenciamento de intervalo de identidade. Para obter mais informações, consulte Replicar colunas de identidade.

@pub_identity_range [ = ] pub_identity_range

Controla o tamanho do intervalo no Publicador se o artigo tiver @identityrangemanagementoption definido como automático ou @auto_identity_range definido como verdadeiro. @pub_identity_range é bigint, com um padrão de NULL. @pub_identity_range não é compatível com Publicadores Oracle.

@identity_range [ = ] identity_range

Controla o tamanho do intervalo no Assinante se o artigo tiver @identityrangemanagementoption definido como automático ou @auto_identity_range definido como verdadeiro. @identity_range é bigint, com um padrão de NULL. Usado quando @auto_identity_range é definido como true. @identity_range não tem suporte para Publicadores Oracle.

@threshold [ = ] limiar

Valor percentual para controle quando o Distribution Agent atribuir um novo intervalo de identidade. Quando a porcentagem de valores especificada em @threshold é usada, o Distribution Agent cria um novo intervalo de identidade. @threshold é int, com um padrão de NULL. Usado quando @identityrangemanagementoption está definido como automático ou @auto_identity_range está definido como true. @threshold não é compatível com Publicadores Oracle.

@force_invalidate_snapshot [ = ] force_invalidate_snapshot

Reconhece que a ação executada por esse procedimento armazenado pode invalidar um instantâneo existente. @force_invalidate_snapshot é bit, com um padrão de 0.

  • 0 Especifica que adicionar um artigo não faz com que o instantâneo seja inválido. Se o procedimento armazenado detectar que a alteração exige um novo instantâneo, ocorrerá um erro e nenhuma alteração será feita.

  • 1 Especifica que a adição de um artigo pode fazer com que o instantâneo seja inválido e, se houver assinaturas que exijam um novo instantâneo, dá permissão para que o instantâneo existente seja marcado como obsoleto e um novo instantâneo seja gerado.

@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 são definidos e, portanto , sp_articleview não é chamado por sp_addarticle.

Quando @use_default_datatypes é definido como 0, você deve executar sp_changearticlecolumndatatype uma vez para cada mapeamento de coluna que está sendo alterado do padrão. Depois que todos os mapeamentos de coluna personalizados tiverem sido definidos, você deverá executá sp_articleview.

Observação

Esse parâmetro só deve ser usado para Publicadores Oracle. Definir @use_default_datatypes como 0 para um Publicador do SQL Server gera um erro.

@identityrangemanagementoption [ = ] N'identityrangemanagementoption'

Especifica como o gerenciamento de intervalo de identidade é tratado para o artigo. @identityrangemanagementoption é nvarchar(10) e pode ser um dos seguintes valores.

Valor Descrição
none A replicação não faz nenhum gerenciamento de intervalo de identidade explícito. Essa opção é recomendada apenas 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) O padrão é none quando o valor de @auto_identity_range não trueé . O padrão é manual em uma topologia ponto a ponto padrão (@auto_identity_range é ignorado).

Para compatibilidade com versões anteriores, quando o valor de @identityrangemanagementoption é NULL, o valor de @auto_identity_range é verificado. No entanto, quando o valor de @identityrangemanagementoption não NULLé , o valor de @auto_identity_range é ignorado.

Para obter mais informações, consulte Replicar colunas de identidade.

@publisher [ = ] N'editor'

Especifica um Publicador não-SQL Server. @publisher é sysname, com um padrão de NULL.

@publisher não deve ser usado ao adicionar um artigo a um Publicador do SQL Server.

@fire_triggers_on_snapshot [ = ] N'fire_triggers_on_snapshot'

Se replicado, os gatilhos de usuário são executados quando o instantâneo inicial é aplicado. @fire_triggers_on_snapshot é nvarchar(5), com um padrão de false. true significa que os gatilhos de usuário em uma tabela replicada são executados quando o snapshot é aplicado. Para que os gatilhos sejam replicados, o valor da máscara de bits de @schema_option deve incluir o valor 0x100.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Comentários

sp_addarticle é usado na replicação de instantâneo ou na replicação transacional.

Por padrão, a replicação não publica nenhuma coluna na tabela de origem quando o tipo de dados de coluna não é compatível com a replicação. Se você precisar publicar essa coluna, deverá executar 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 @status valor.

  • 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 automático de intervalo de identidade. Você deve especificar um valor de manual para @identityrangemanagementoption.

  • Se houver uma coluna de carimbo de data/hora na tabela, você deverá incluir 0x08 em @schema_option para replicar a coluna como carimbo de data/hora.

  • Um valor de SQL não pode ser especificado para @ins_cmd, @upd_cmd e @del_cmd.

Para obter mais informações, consulte Ponto a ponto - Replicação transacional.

Quando você publicar objetos, suas definições são copiadas aos Assinantes. Se você estiver publicando um objeto de banco de dados que depende de um ou mais outros objetos, deverá publicar todos os objetos referenciados. Por exemplo, se você publicar uma exibição que depende de uma tabela, terá de publicar a tabela também.

Se @vertical_partition for definido como true, sp_addarticle adia a criação da exibição até que sp_articleview seja chamado (depois que o último sp_articlecolumn for adicionado).

Se a publicação permitir a atualização de assinaturas e a tabela publicada não tiver uma coluna uniqueidentifier, o adicionará uma coluna uniqueidentifier sp_addarticle à 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 INSERT, UPDATEe comandos 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 Replication Monitor para interromper o agente do leitor de log no nó em que você está adicionando o artigo. Reinicie o Agente de Leitor de Log depois de adicionar o artigo.

Ao definir @del_cmd ou NONE @ins_cmd como NONE, a propagação de comandos também pode ser afetada UPDATE pelo não envio desses comandos quando ocorre uma atualização limitada. (Uma atualização limitada é o tipo de UPDATE instrução do editor que é replicada como um DELETE/INSERT par no assinante.)

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, em que esse valor depende do tipo de replicação (mostrado na parte superior) e do tipo de artigo (mostrado na primeira coluna).

Tipo de artigo Replicação transacional Replicação de instantâneo
somente esquema agregado 0x01 0x01
somente esquema func 0x01 0x01
Somente esquema de exibição indexado 0x01 0x01
exibição indexada baseada em log 0x30F3 0x3071
Visualização indexada Logbase manualAmbos 0x30F3 0x3071
Exibição indexada baseada em log ManualFilter 0x30F3 0x3071
Exibição indexada baseada em logManualView 0x30F3 0x3071
baseado em log 0x30F3 0x3071
manual baseado em logfilter 0x30F3 0x3071
Logbased manualview 0x30F3 0x3071
proc exec 0x01 0x01
somente esquema proc 0x01 0x01
exec proc serializável 0x01 0x01
Exibir somente esquema 0x01 0x01

Observação

Se uma publicação estiver habilitada para atualização em fila, um valor de @schema_option de 0x80 será adicionado ao valor padrão mostrado na tabela. O @schema_option padrão para uma publicação que não seja do 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 (mostrado na parte superior) e no tipo de artigo (mostrado abaixo na primeira coluna).

Tipo de artigo Replicação transacional Replicação de instantâneo
baseado em log Todas as opções Todas as opções, mas 0x02
manual baseado em logfilter Todas as opções Todas as opções, mas 0x02
Logbased manualview Todas as opções Todas as opções, mas 0x02
exibição indexada baseada em log Todas as opções Todas as opções, mas 0x02
Exibição indexada baseada em log ManualFilter Todas as opções Todas as opções, mas 0x02
Exibição indexada baseada em logManualView Todas as opções Todas as opções, mas 0x02
Visualização indexada Logbase manualAmbos Todas as opções Todas as opções, mas 0x02
proc exec 0x01, 0x20, 0x2000, 0x400000, 0x8000000x200000000x20000000x100000000x80000000x40000000e0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x8000000x200000000x20000000x100000000x80000000x40000000e0x80000000
exec proc serializável 0x01, 0x20, 0x2000, 0x400000, 0x8000000x200000000x20000000x100000000x80000000x40000000e0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x8000000x200000000x20000000x100000000x80000000x40000000e0x80000000
somente esquema proc 0x01, 0x20, 0x2000, 0x400000, 0x8000000x200000000x20000000x100000000x80000000x40000000e0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x8000000x200000000x20000000x100000000x80000000x40000000e0x80000000
Exibir somente esquema 0x01, 0x010, 0x020, 0x040, 0x0100, 0x20000x4000000x1000000x400000x8000000x20000000x2000000x8000000, , e 0x400000000x80000000 0x01, 0x010, 0x020, 0x040, 0x0100, 0x20000x4000000x1000000x400000x8000000x20000000x2000000x8000000, , e 0x400000000x80000000
somente esquema func 0x01, 0x20, 0x2000, 0x400000, 0x8000000x200000000x20000000x100000000x80000000x40000000e0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x8000000x200000000x20000000x100000000x80000000x40000000e0x80000000
Somente esquema de exibição indexado 0x01, 0x010, 0x020, 0x040, 0x0100, 0x20000x4000000x1000000x400000x8000000x20000000x2000000x8000000, , e 0x400000000x80000000 0x01, 0x010, 0x020, 0x040, 0x0100, 0x20000x4000000x1000000x400000x8000000x20000000x2000000x8000000, , e 0x400000000x80000000

Observação

Para publicações de atualização enfileiradas, os valores @schema_option de 0x8000 e 0x80 devem ser habilitados. Os valores de @schema_option com suporte para publicações não SQL Server são: 0x01, 0x02, 0x10, 0x40, 0x80, 0x1000, e 0X80000x4000 .

Exemplos

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 db_owner função de banco de dados fixa podem executar sp_addarticle.