sp_addarticle (Transact-SQL)

Aplica-se a:SQL ServerInstâ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; em vez disso, use @source_object em vez disso. @source_table é nvarchar(386), com um padrão de NULL. @source_table não é compatível com o Oracle Publishers.

@destination_table [ = ] N'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. 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 exclusivas. 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 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 no 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 é 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 for chamado para criar automaticamente a exibição usada para gerar o arquivo de saída. Isso ocorre depois de adicionar quaisquer colunas com sp_articlecolumn. Caso contrário NULL, um modo de exibição não será criado (pressupõe que o modo de exibição seja criado 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 é precedido 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 a especificação <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 é precedido 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 a especificação <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 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 é precedido 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 é precedido 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 de , MCALL, SCALLe XCALL variar a quantidade de CALLdados propagados para o assinante. A CALL sintaxe passa todos os valores para todas as colunas inseridas e excluídas. A SCALL sintaxe passa valores somente 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 | (Bit a bit OU) produto de um ou mais destes valores:

Observação

Se esse valor for NULL, o sistema gera 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 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 Replicar colunas de carimbo de data/hora . Se não estiverem definidas, 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.
0x201 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.
0x1001 Replica gatilhos de usuário em um artigo de tabela, se definido.
0x2001 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.
0x4001 Replica restrições de verificação.
0x8001 Replica padrões.
0x1000 Replica ordenação em nível de coluna.

Nota: Esta opção deve ser definida para o Oracle Publishers para permitir comparações que diferenciam maiúsculas de minúsculas.
0x20001 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 de CHAVE ESTRANGEIRA como NÃO PARA REPLICAÇÃO 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 regra
0x1000000 Índice de texto completo
0x2000000 As coleções de esquema XML vinculadas 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 (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 fazem 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 estiver replicando tabelas para Assinantes do SQL Server 2005 (9.x). Não há suporte para a replicação de tabelas com 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, 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 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 que o instantâneo é aplicado.

Consulte a opção relacionada 0x100000000.
0x1000000000 Converte tipos definidos pelo usuário (UDTs) CLR (Common Language Runtime) maiores que 8000 bytes em varbinary(max) para que colunas do tipo UDT possam ser replicadas para Assinantes que estejam executando 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 estejam executando o SQL Server 2005 (9.x). Para obter mais informações sobre como usar colunas hierarchyid em tabelas replicadas, consulte hierarchyid (Transact-SQL).
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 de geografia e geometria em varbinary(max) para que colunas desses tipos possam ser replicadas para Assinantes que estejam executando o SQL Server 2005 (9.x).
0x10000000000 Replica índices em colunas do tipo geografia e geometria.
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 otimizada para memória no assinante.
0x80000000000 Converte índice clusterizado em índice não clusterizado para artigos otimizados para memória.
0x400000000000 Replica quaisquer índices columnstore não clusterizados na(s) tabela(s)
0x800000000000 Replica quaisquer índices columnstore não clusterizados filtrados na(s) tabela(s).
NULL A replicação define automaticamente @schema_option para 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 que não sejam do SQL Server é 0x050D3.

1 Não suportado para editores 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álidas 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 cópia em massa no modo nativo para gerar o instantâneo inicial, que oferece suporte apenas a Assinantes do SQL Server. O padrão é o valor de @source_owner.
Publicado a partir 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 cópia em massa no modo de caractere para gerar o instantâneo inicial, que oferece suporte a Assinantes que não são do SQL Server. Não atribuído.

Para oferecer suporte a Assinantes que não sejam do 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 | (Bit a bit OU) produto de um ou mais desses valores.

Valor Descrição
1 O artigo está ativo.
8 Inclui o nome da coluna nas 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 é 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 Editores Oracle.

@sync_object_owner [ = ] N'sync_object_owner'

O proprietário do modo de 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 do intervalo de identidades 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 identidades é 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 Publisher se o artigo tiver @identityrangemanagementoption definido como automático ou @auto_identity_range definido como true. @pub_identity_range é bigint, com um padrão de NULL. @pub_identity_range não é compatível com o Oracle Publishers.

@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 true. @identity_range é bigint, com um padrão de NULL. Usado quando @auto_identity_range é definido como true. @identity_range não é compatível com o Oracle Publishers.

@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 Agente de Distribuição 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 o Oracle Publishers.

@force_invalidate_snapshot [ = ] force_invalidate_snapshot

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

  • 0 especifica que a adição de 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 snapshot seja inválido e, se existirem assinaturas que exijam um novo snapshot, dá permissão para que o snapshot existente seja marcado como obsoleto e um novo snapshot 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 Oracle Publisher. @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 para 0 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 é quando o valor de @auto_identity_range não trueé none . O padrão é manual em um padrão de topologia ponto a ponto (@auto_identity_range é ignorado).

Para compatibilidade com versões anteriores, quando o valor de @identityrangemanagementoption é , o valor de @auto_identity_range é NULLverificado. 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 que não seja do SQL Server. @publisher é sysname, com um padrão de NULL.

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

@fire_triggers_on_snapshot [ = ] N'fire_triggers_on_snapshot'

Se os gatilhos de usuário replicados forem executados quando o snapshot inicial for aplicado. @fire_triggers_on_snapshot é nvarchar(5), com um padrão de false. true significa que os disparos do usuário em uma tabela replicada são executados quando o snapshot é aplicado. Para que os gatilhos sejam replicados, o valor bitmask 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 snapshot ou 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 é suportado pela 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 do intervalo de identidades. Você deve especificar um valor de manual para @identityrangemanagementoption.

  • Se existir uma coluna de carimbo de data/hora na tabela, você deverá incluir 0x08 no @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 estiver definido como true, sp_addarticle adiará a criação do modo de exibição até que sp_articleview seja 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 seja uma instância do SQL Server (replicação heterogênea), somente instruções Transact-SQL têm suporte para INSERTcomandos , 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 Replication Monitor para interromper o agente 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 para NONE, a propagação de comandos também pode ser afetada pelo não envio desses UPDATE comandos quando ocorre uma atualização limitada. (Uma atualização limitada é o tipo de UPDATE instrução do editor que replica 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 manualboth 0x30F3 0x3071
Filtro manual baseado em log de exibição indexada 0x30F3 0x3071
exibição indexada baseada em log manualview 0x30F3 0x3071
baseado em logs; 0x30F3 0x3071
logbased manualfilter 0x30F3 0x3071
logbased manualview 0x30F3 0x3071
proc executivo 0x01 0x01
Somente esquema proc 0x01 0x01
executivo 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 @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 logs; Todas as opções Todas as opções, mas 0x02
logbased manualfilter 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
Filtro manual baseado em log de exibição indexada Todas as opções Todas as opções, mas 0x02
exibição indexada baseada em log manualview Todas as opções Todas as opções, mas 0x02
Visualização indexada logbase manualboth Todas as opções Todas as opções, mas 0x02
proc executivo 0x01, , , , , , , , 0x100000000x800000, e 0x400000000x200000000x200x20000x4000000x20000000x80000000x80000000 0x01, , , , , , , , 0x100000000x800000, e 0x400000000x200000000x200x20000x4000000x20000000x80000000x80000000
executivo proc serializável 0x01, , , , , , , , 0x100000000x800000, e 0x400000000x200000000x200x20000x4000000x20000000x80000000x80000000 0x01, , , , , , , , 0x100000000x800000, e 0x400000000x200000000x200x20000x4000000x20000000x80000000x80000000
Somente esquema proc 0x01, , , , , , , , 0x100000000x800000, e 0x400000000x200000000x200x20000x4000000x20000000x80000000x80000000 0x01, , , , , , , , 0x100000000x800000, e 0x400000000x200000000x200x20000x4000000x20000000x80000000x80000000
Exibir somente esquema 0x01, , 0x020, , , , , 0x1000000x20000x400000x2000000x4000000x0100x20000000x0400x400000000x01000x8000000x8000000e0x80000000 0x01, , 0x020, , , , , 0x1000000x20000x400000x2000000x4000000x0100x20000000x0400x400000000x01000x8000000x8000000e0x80000000
somente esquema func 0x01, , , , , , , , 0x100000000x800000, e 0x400000000x200000000x200x20000x4000000x20000000x80000000x80000000 0x01, , , , , , , , 0x100000000x800000, e 0x400000000x200000000x200x20000x4000000x20000000x80000000x80000000
Somente esquema de exibição indexado 0x01, , 0x020, , , , , 0x1000000x20000x400000x2000000x4000000x0100x20000000x0400x400000000x01000x8000000x8000000e0x80000000 0x01, , 0x020, , , , , 0x1000000x20000x400000x2000000x4000000x0100x20000000x0400x400000000x01000x8000000x8000000e0x80000000

Observação

Para publicações de atualização em fila, os valores @schema_option de 0x8000 e 0x80 devem ser habilitados. Os valores de @schema_option com suporte para publicações que não sejam do SQL Server são: 0x01, , , , , 0x400x020x100x80e . 0x10000x40000X8000

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.