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
, SCALL
e XCALL
variar a quantidade de CALL
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 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. |
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. Nota: Esta opção deve ser definida para o Oracle Publishers para permitir 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 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 porsp_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 é NULL
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 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 INSERT
comandos , UPDATE
e 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 , , , , , , , , 0x10000000 0x800000 , e 0x40000000 0x20000000 0x20 0x2000 0x400000 0x2000000 0x8000000 0x80000000 |
0x01 , , , , , , , , 0x10000000 0x800000 , e 0x40000000 0x20000000 0x20 0x2000 0x400000 0x2000000 0x8000000 0x80000000 |
executivo proc serializável | 0x01 , , , , , , , , 0x10000000 0x800000 , e 0x40000000 0x20000000 0x20 0x2000 0x400000 0x2000000 0x8000000 0x80000000 |
0x01 , , , , , , , , 0x10000000 0x800000 , e 0x40000000 0x20000000 0x20 0x2000 0x400000 0x2000000 0x8000000 0x80000000 |
Somente esquema proc | 0x01 , , , , , , , , 0x10000000 0x800000 , e 0x40000000 0x20000000 0x20 0x2000 0x400000 0x2000000 0x8000000 0x80000000 |
0x01 , , , , , , , , 0x10000000 0x800000 , e 0x40000000 0x20000000 0x20 0x2000 0x400000 0x2000000 0x8000000 0x80000000 |
Exibir somente esquema | 0x01 , , 0x020 , , , , , 0x100000 0x2000 0x40000 0x200000 0x400000 0x010 0x2000000 0x040 0x40000000 0x0100 0x800000 0x8000000 e0x80000000 |
0x01 , , 0x020 , , , , , 0x100000 0x2000 0x40000 0x200000 0x400000 0x010 0x2000000 0x040 0x40000000 0x0100 0x800000 0x8000000 e0x80000000 |
somente esquema func | 0x01 , , , , , , , , 0x10000000 0x800000 , e 0x40000000 0x20000000 0x20 0x2000 0x400000 0x2000000 0x8000000 0x80000000 |
0x01 , , , , , , , , 0x10000000 0x800000 , e 0x40000000 0x20000000 0x20 0x2000 0x400000 0x2000000 0x8000000 0x80000000 |
Somente esquema de exibição indexado | 0x01 , , 0x020 , , , , , 0x100000 0x2000 0x40000 0x200000 0x400000 0x010 0x2000000 0x040 0x40000000 0x0100 0x800000 0x8000000 e0x80000000 |
0x01 , , 0x020 , , , , , 0x100000 0x2000 0x40000 0x200000 0x400000 0x010 0x2000000 0x040 0x40000000 0x0100 0x800000 0x8000000 e0x80000000 |
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
, , , , , 0x40
0x02
0x10
0x80
e . 0x1000
0x4000
0X8000
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
.
Conteúdo relacionado
- Defina um Artigo
- sp_articlecolumn (Transact-SQL)
- sp_articlefilter (Transact-SQL)
- sp_articleview (Transact-SQL)
- sp_changearticle (Transact-SQL)
- sp_droparticle (Transact-SQL)
- sp_helparticle (Transact-SQL)
- sp_helparticlecolumns (Transact-SQL)
- Procedimentos armazenados de replicação (Transact-SQL)
- Publicar dados e objetos de banco de dados
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de