sp_addarticle (Transact-SQL)
Cria um artigo e o adiciona a uma publicação. Esse procedimento armazenado é executado no Publicador, no banco de dados de publicação.
Sintaxe
sp_addarticle [ @publication = ] 'publication'
, [ @article = ] 'article'
[ , [ @source_table = ] 'source_table' ]
[ , [ @destination_table = ] 'destination_table' ]
[ , [ @vertical_partition = ] 'vertical_partition' ]
[ , [ @type = ] 'type' ]
[ , [ @filter = ] 'filter' ]
[ , [ @sync_object= ] 'sync_object' ]
[ , [ @ins_cmd = ] 'ins_cmd' ]
[ , [ @del_cmd = ] 'del_cmd' ]
[ , [ @upd_cmd = ] 'upd_cmd' ]
[ , [ @creation_script = ] 'creation_script' ]
[ , [ @description = ] 'description' ]
[ , [ @pre_creation_cmd = ] 'pre_creation_cmd' ]
[ , [ @filter_clause = ] 'filter_clause' ]
[ , [ @schema_option = ] schema_option ]
[ , [ @destination_owner = ] 'destination_owner' ]
[ , [ @status = ] status ]
[ , [ @source_owner = ] 'source_owner' ]
[ , [ @sync_object_owner = ] 'sync_object_owner' ]
[ , [ @filter_owner = ] 'filter_owner' ]
[ , [ @source_object = ] 'source_object' ]
[ , [ @artid = ] article_ID OUTPUT ]
[ , [ @auto_identity_range = ] 'auto_identity_range' ]
[ , [ @pub_identity_range = ] pub_identity_range ]
[ , [ @identity_range = ] identity_range ]
[ , [ @threshold = ] threshold ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @use_default_datatypes = ] use_default_datatypes
[ , [ @identityrangemanagementoption = ] identityrangemanagementoption ]
[ , [ @publisher = ] 'publisher' ]
[ , [ @fire_triggers_on_snapshot = ] 'fire_triggers_on_snapshot' ]
Argumentos
[ @publication = ] 'publication'
É o nome da publicação que contém o artigo. O nome precisa ser exclusivo no banco de dados. publication é sysname, sem padrão.[ @article = ] 'article'
É o nome do artigo. O nome deve ser exclusivo na publicação. article é sysname, sem padrão.[ @source_table = ] 'source_table'
Este parâmetro foi substituído; em lugar dele, use source_object.Esse parâmetro tem suporte apenas para compatibilidade com o SQL Server 6.5. Esse parâmetro não tem suporte para Publicadores Oracle.
[ @destination_table = ] 'destination_table'
É o nome da tabela de destino (assinatura), caso seja diferente de source_tableou procedimento armazenado. destination_table é sysname, com um padrão de NULL, o que significa que source_table é igual a destination_table*.*[ @vertical_partition = ] 'vertical_partition'
Habilita e desabilita a filtragem de coluna em um artigo de tabela. vertical_partition é nchar(5), com um padrão de FALSO.falso indica que não há filtragem vertical e publica todas as colunas.
verdadeiro desmarca todas as colunas exceto a chave primária declarada, colunas anuláveis e sem padrão e colunas fundamentais exclusivas. As colunas são adicionadas colunas usando sp_articlecolumn.
[ @type = ] 'type'
É o tipo de artigo, type é sysnamee pode ser um dos valores a seguir.Valor
Descrição
apenas esquema agregado
Função agregada apenas com esquema.
func schema only
Função somente com esquema.
indexed view logbased
Artigo de exibição indexada com base em log. Sem suporte para Publicadores Oracle. Para esse tipo de artigo, a tabela base não precisa ser publicada separadamente.
exibição indexada com base em log e manual
Artigo de exibição indexada com filtro manual e exibição manual. Essa opção exige que você especifique os parâmetros sync_object e filter. Para esse tipo de artigo, a tabela base não precisa ser publicada separadamente. Sem suporte para Publicadores Oracle.
indexed view logbased manualfilter
Artigo de exibição indexada com filtro manual. Esta opção requer que você especifique os parâmetros sync_object e filter. Para esse tipo de artigo, a tabela base não precisa ser publicada separadamente. Sem suporte para Publicadores Oracle.
indexed view logbased manualview
Artigo de exibição indexada com base em log com exibição manual. Esta opção requer que você especifique o parâmetro sync_object. Para esse tipo de artigo, a tabela base não precisa ser publicada separadamente. Sem suporte para Publicadores Oracle.
indexed view schema only
Exibição indexada somente com esquema Para esse tipo de artigo, também deve ser publicada a tabela base.
com base em log (padrão)
Artigo com base em log.
logbased manualboth
Artigo com base em log com filtro manual e exibição manual. Esta opção requer que você especifique os parâmetros sync_object e filter. Sem suporte para Publicadores Oracle.
logbased manualfilter
Artigo com base em log com filtro manual. Essa opção requer que você especifique os parâmetros sync_object e filter. Sem suporte para Publicadores Oracle.
logbased manualview
Artigo com base em log com exibição manual. Esta opção requer que você especifique o parâmetro sync_object. Sem suporte para Publicadores Oracle.
proc exec
Replica a execução do procedimento armazenado para todos os assinantes do artigo. Sem suporte para Publicadores Oracle. É recomendável usar a opção serializable proc exec, em vez de proc exec. Para obter mais informações, consulte a seção "Tipos de artigos de execução de procedimento armazenado" no Publicando execução de procedimento armazenado em replicação de transação.
proc schema only
Procedimento apenas com esquema. Sem suporte para Publicadores Oracle.
execução do processo serializável
Replica a execução do procedimento armazenado apenas se este for executado no contexto de uma transação serializável. Sem suporte para Publicadores Oracle.
view schema only
Exibição somente com esquema Sem suporte para Publicadores Oracle. Ao usar esta opção, você também deve publicar a tabela base.
[ @filter = ] 'filter'
É o procedimento armazenado (criado com FOR REPLICATION) usado para filtrar a tabela horizontalmente. filter é nvarchar(386), com um padrão de NULL. sp_articleview e sp_articlefilter deve ser executado manualmente para criar a exibição e procedimento armazenado de filtro. Se não for NULL, o procedimento de filtro não é criado (assume-se que o procedimento armazenado é criado manualmente).[ @sync_object = ] 'sync_object'
É o nome da tabela ou exibição usada para criar o arquivo de dados usado para representar o instantâneo desse artigo. sync_object é nvarchar(386), com um padrão de NULL. Se for NULL, sp_articleview é chamado para criar automaticamente a exibição usada para gerar o arquivo de saída. Isso acontece depois que qualquer coluna com sp_articlecolumn for adicionada Se não for NULL, uma exibição não é criada (assume-se que a exibição é criada manualmente).[ @ins_cmd = ] 'ins_cmd'
É o tipo de comando de replicação usado ao replicar inserções no artigo. ins_cmd é nvarchar(255) e pode ser um dos seguintes valores.Valor
Descrição
NONE
Nenhuma ação é tomada.
CALL sp_MSins_table (padrão)
- ou -
CALL custom_stored_procedure_name
Chama um procedimento armazenado a ser executado no assinante. Para usar esse método de replicação, use schema_option para especificar a criação automática de procedimento armazenado ou criar o procedimento armazenado no banco de dados de destino de cada assinante do artigo. custom_stored_procedure é o nome de um procedimento armazenado criado pelo usuário. A tabela sp_MSins_ contém o nome da tabela de destino no lugar da parte _table do parâmetro. Quando destination_owner é especificado, ele é pré-demarcado para o nome da tabela de destino. Por exemplo, para a tabela CategoriaDeProduto de propriedade do esquema Produção no assinante, o parâmetro seria CALL sp_MSins_ProductionProductCategory. Para um artigo em uma topologia de replicação ponto a ponto, _table é acrescentado com um valor GUID. Especificar custom_stored_procedure não é suportado para atualização de assinantes.
SQL ou NULL
Reproduz uma instrução INSERT. A instrução INSERT fornece valores para todas as colunas publicadas no artigo. Esse comando é replicado em inserções:
INSERT INTO <table name> VALUES (c1value, c2value, c3value, ..., cnvalue)
Para obter mais informações, consulte Especificando como as alterações são propagadas para Artigos Transacionais.
[ @del_cmd =] 'del_cmd'
É o tipo de comando de replicação usado ao replicar exclusões do artigo. del_cmd é nvarchar(255) e pode ser um dos seguintes valores.Valor
Descrição
NONE
Nenhuma ação é tomada.
CALL sp_MSdel_tabela (padrão)
- ou -
CALL custom_stored_procedure_name
Chama um procedimento armazenado a ser executado no assinante. Para usar esse método de replicação, use schema_option para especificar a criação automática do procedimento armazenado ou criar o procedimento armazenado especificado no banco de dados de destino de cada assinante do artigo. custom_stored_procedure é o nome de um procedimento armazenado criado pelo usuário. A tabela sp_MSdel_ contém o nome da tabela de destino em lugar da parte _table do parâmetro. Quando destination_owner é especificado, ele é pré-demarcado para o nome da tabela de destino. Por exemplo, para a tabela CategoriaDeProduto de propriedade do esquema Produção no assinante, o parâmetro seria CALL sp_MSdel_ProductionProductCategory. Para um artigo em uma topologia de replicação ponto a ponto, _table é acrescentado com um valor GUID. Especificar custom_stored_procedure não é suportado para atualização de assinantes.
XCALL sp_MSdel_table
- ou -
XCALL custom_stored_procedure_name
Chama um procedimento armazenado tomando parâmetros no estilo XCALL. Para usar esse método de replicação, use schema_option para especificar a criação automática do procedimento armazenado ou criar o procedimento armazenado especificado no banco de dados de destino de cada assinante do artigo. Não é permitido especificar um procedimento armazenado para atualizar assinantes.
SQL ou NULL
Replica uma instrução DELETE. A instrução DELETE é fornecida em todos os valores de coluna de chave primária. Esse comando é replicado em exclusões:
DELETE FROM <table name> WHERE pkc1 = pkc1value AND pkc2 = pkc2value AND pkcn = pkcnvalue
Para obter mais informações, consulte Especificando como as alterações são propagadas para Artigos Transacionais.
[ @upd_cmd =] 'upd_cmd'
É o tipo de comando de replicação usado ao replicar atualizações do artigo. upd_cmd é nvarchar(255) e pode ser um dos seguintes valores.Valor
Descrição
NONE
Nenhuma ação é tomada.
CALL sp_MSupd_table
- ou -
CALL custom_stored_procedure_name
Chama um procedimento armazenado a ser executado no assinante. Para usar esse método de replicação, use schema_option para especificar a criação automática do procedimento armazenado ou criar o procedimento armazenado especificado no banco de dados de destino de cada assinante do artigo.
MCALL sp_MSupd_table
- ou -
MCALL custom_stored_procedure_name
Chama um procedimento armazenado tomando parâmetros no estilo MCALL. Para usar esse método de replicação, use schema_option para especificar a criação automática do procedimento armazenado ou criar o procedimento armazenado especificado no banco de dados de destino de cada assinante do artigo. custom_stored_procedure é o nome de um procedimento armazenado criado pelo usuário. A tabela sp_MSupd_ contém o nome da tabela de destino no lugar da parte _table do parâmetro. Quando destination_owner é especificado, ele é pré-demarcado para o nome da tabela de destino. Por exemplo, para a tabela CategoriaDeProduto de propriedade do esquema Produção no assinante, o parâmetro seria MCALL sp_MSupd_ProductionProductCategory. Para um artigo em uma topologia de replicação ponto a ponto, _table é acrescentado com um valor GUID. Não é permitido especificar um procedimento armazenado para atualizar assinantes.
SCALL sp_MSupd_table (padrão)
- ou -
SCALL custom_stored_procedure_name
Chama um procedimento armazenado tomando parâmetros no estilo SCALL. Para usar esse método de replicação, use schema_option para especificar a criação automática do procedimento armazenado ou criar o procedimento armazenado especificado no banco de dados de destino de cada assinante do artigo. custom_stored_procedure é o nome de um procedimento armazenado criado pelo usuário. A tabela sp_MSupd_ contém o nome da tabela de destino no lugar da parte _table do parâmetro. Quando destination_owner é especificado, ele é pré-demarcado para o nome da tabela de destino. Por exemplo, para a tabela CategoriaDeProduto de propriedade do esquema Produção no assinante, o parâmetro seria SCALL sp_MSupd_ProductionProductCategory. Para um artigo em uma topologia de replicação ponto a ponto, _table é acrescentado com um valor GUID. Não é permitido especificar um procedimento armazenado para atualizar assinantes.
XCALL sp_MSupd_table
- ou -
XCALL custom_stored_procedure_name
Chama um procedimento armazenado tomando parâmetros no estilo XCALL. Para usar esse método de replicação, use schema_option para especificar a criação automática do procedimento armazenado ou criar o procedimento armazenado especificado no banco de dados de destino de cada assinante do artigo. Não é permitido especificar um procedimento armazenado para atualizar assinantes.
SQL ou NULL
Replica uma instrução UPDATE. A instrução UPDATE é fornecida em todos os valores de coluna e os valores de coluna de chave primária. Esse comando é replicado em atualizações:
UPDATE <table name> SET c1 = c1value, SET c2 = c2value, SET cn = cnvalue WHERE pkc1 = pkc1value AND pkc2 = pkc2value AND pkcn = pkcnvalue
Observação A sintaxe CALL, MCALL, SCALL e XCALL variam a quantidade de dados propagada ao assinante. A sintaxe CALL passa todos os valores para todas as colunas inseridas e excluídas. A sintaxe SCALL passa valores apenas para as colunas afetadas. A sintaxe XCALL passa valores para todas as colunas, alteradas ou não, inclusive o valor anterior da coluna. Para obter mais informações, consulte Especificando como as alterações são propagadas para Artigos Transacionais.
[ @creation_script =] 'creation_script'
É o caminho e nome de um script de esquema de artigo opcional usados para criar o artigo no banco de dados de assinatura. creation_script é nvarchar(255), com um padrão de NULO.[ @description =] 'description'
É uma entrada descritiva do artigo. description é nvarchar(255), com um padrão NULL.[ @pre_creation_cmd =] 'pre_creation_cmd'
Especifica o que o sistema deve fazer se detectar um objeto existente com o mesmo nome no assinante, ao aplicar o instantâneo para esse artigo. pre_creation_cmd é nvarchar(10) e pode ser um dos seguintes valores.Valor
Descrição
none
Não usa um comando.
excluir
Exclui dados da tabela de destino antes de aplicar o instantâneo. Quando o artigo é filtrado horizontalmente, apenas dados em colunas especificadas pela cláusula de filtro são excluídos. Não há suporte por Publicadores da Oracle quando um filtro horizontal é definido.
descartar(padrão)
Descarta a tabela de destino.
truncate
Trunca a tabela de destino. Não é válido para assinantes ODBC ou OLE DB.
[ @filter_clause=] 'filter_clause'
É uma cláusula de restrição (WHERE) que define um filtro horizontal. Ao inserir a cláusula de restrição, omita a palavra-chave WHERE. filter_clause is ntext, com um padrão NULL. Para obter mais informações, consulte Filtrando dados publicados.[ @schema_option =] schema_option
O bitmask da opção de geração de esquema para o artigo determinado. schema_option é binary(8), e pode ser o | (Bitwise OR) produto de um ou mais desses valores.Observação Se este valor for NULL, o sistema gerará automaticamente uma opção de esquema válida para o artigo dependendo de outras propriedades do artigo. A tabela Opções de Esquema Padrão na seção Observações mostra o valor escolhido com base na combinação de tipo de artigo e tipo de replicação.
Valor
Descrição
0x00
Desabilita execução de script pelo Snapshot Agent e usa creation_script.
0x01
Gera o script de criação de objeto (CREATE TABLE, CREATE PROCEDURE, e assim por diante). Esse valor é o padrão para artigos de procedimento armazenado.
0x02
Gera os procedimentos armazenados que propagam alterações para o artigo, se definido.
0x04
Os scripts das colunas de identidade são feitos usando a propriedade IDENTITY .
0x08
Replica colunas timestamp. Se não definidas, as colunas timestamp são replicadas como binary.
0x10
Gera um índice clusterizado correspondente. Mesmo se esta opção não estiver definida, os índices relacionados às chaves primárias e as restrições exclusivas são geradas caso já estejam definidas em uma tabela publicada.
0x20
Converte UDTs (tipos de dados definidos pelo usuário) em tipos de dados básicos no Assinante. Essa opção não poderá ser usada quando houver uma restrição CHECK ou DEFAULT em uma coluna UDT, se uma coluna UDT for parte da chave primária ou se uma coluna computada fizer referência a uma coluna UDT. Sem suporte para Publicadores Oracle.
0x40
Gera índices não clusterizados correspondentes. Mesmo se esta opção não estiver definida, os índices relacionados às chaves primárias e as restrições exclusivas são geradas caso já estejam definidas em uma tabela publicada.
0x80
Replica restrições de chave primária. Qualquer índice relacionado à restrição é também replicado, mesmos e as opções 0x10 e 0x40 não estiverem habilitadas.
0x100
Replica gatilhos de usuário em um artigo de tabela, se definido. Sem suporte para Publicadores Oracle.
0x200
Replica restrições de chave estrangeira. Se a tabela referenciada não for parte de uma publicação, todas as restrições de chave estrangeira em uma tabela publicada não serão replicadas. Sem suporte para Publicadores Oracle.
0x400
Replica restrições de verificação. Sem suporte para Publicadores Oracle.
0x800
Replica padrões. Sem suporte para Publicadores Oracle.
0x1000
Replica agrupamento de nível de coluna.
ObservaçãoEssa opção deve ser definida para Publicadores Oracle para habilitar comparações entre letras maiúsculas e minúsculas.0x2000
Replica propriedades estendidas associadas com o objeto de origem do artigo publicado. Sem suporte para Publicadores Oracle.
0x4000
Replica restrições UNIQUE. Qualquer índice relacionado à restrição é também replicado, mesmos e as opções 0x10 e 0x40 não estiverem habilitadas.
0x8000
Esta opção não é válida para Publicadores SQL Server 2005.
0x10000
Replica instruções CHECK como NOT FOR REPLICATION para que as restrições não sejam forçadas durante a sincronização.
0x20000
Replica instruções FOREIGN KEY como NOT FOR REPLICATION para que as restrições não sejam forçadas durante a sincronização.
0x40000
Replica grupos de arquivos associados com uma tabela ou um índice particionado.
0x80000
Replica o esquema de partição para uma tabela particionada.
0x100000
Replica o esquema de partição para um índice particionado.
0x200000
Replica estatísticas de tabela.
0x400000
Associações padrão
0x800000
Associações de regra
0x1000000
Índice de texto completo
0x2000000
Coleções de esquema CXML associadas a colunas xml não são replicadas.
0x4000000
Replica índices em colunas xml.
0x8000000
Crie esquemas ainda não presentes no assinante.
0x10000000
Converte colunas xml em ntext no Assinante.
0x20000000
Converte tipos de dados de objeto grande (nvarchar(max), varchar(max) e varbinary(max)) introduzidos no SQL Server 2005 em tipos de dados com suporte no SQL Server 2000. Para obter informações sobre como esses tipos são mapeados, consulte a seção “Mapeando novos tipos de dados para versões anteriores”, em Usando várias versões do SQL Server em uma topologia de replicação.
0x40000000
Replica permissões.
0x80000000
Tenta descartar dependências de qualquer objeto que não faz parte da publicação.
0x100000000
Use essa opção para replicar o atributo FILESTREAM, se ele for especificado em colunas varbinary(max). Não especifique essa opção se você estiver replicando tabelas para Assinantes SQL Server 2005. A replicação de tabelas com colunas FILESTREAM para Assinantes do SQL Server 2000 não tem suporte, independentemente de como essa opção de esquema é definida.
Consulte a opção relacionada 0x800000000.
0x200000000
Converte tipos de dados de data e hora (date, time, datetimeoffset e datetime2) que foram introduzidos no SQL Server 2008 em tipos de dados com suporte nas versões anteriores do SQL Server. Para obter informações sobre como esses tipos são mapeados, consulte a seção “Mapeando novos tipos de dados para versões anteriores”, em Usando várias versões do SQL Server em uma topologia de replicação.
0x400000000
Replica a opção de compressão para dados e índices. Para obter mais informações, consulte Criando tabelas e índices compactados.
0x800000000
Defina essa opção para armazenar dados FILESTREAM em seu próprio grupo de arquivos no Assinante. Se esta opção não for definida, os dados FILESTREAM serão armazenados no grupo de arquivos padrão. A replicação não cria grupos de arquivos; portanto, se você definir essa opção, terá de criar o grupo de arquivos antes de aplicar o instantâneo no Assinante. Para obter mais informações sobre como criar objetos antes de aplicar o instantâneo, consulte Executando scripts antes ou depois que o instantâneo é aplicado.
Consulte a opção relacionada 0x100000000.
0x1000000000
Converte UDTs (tipos definidos pelo usuário) de CLR (Common Language Runtime) maiores que 8000 bytes em varbinary(max) para que as colunas do tipo UDT possam ser replicadas para os assinantes em execução no SQL Server 2005.
0x2000000000
Converte tipo de dados hierarchyid em varbinary(max) para que colunas do tipo hierarchyid possam ser replicadas para os Assinantes em execução no SQL Server 2005. Para obter mais informações sobre como usar colunas hierarchyid em tabelas replicadas, consulte hierarchyid (Transact-SQL).
0x4000000000
Reproduz qualquer índice filtrado na tabela. Para obter mais informações sobre índices filtrados, consulte Diretrizes de criação de índice filtrado.
0x8000000000
Converte os tipos de dados geography e geometry em varbinary(max) para que colunas desses tipos possam ser replicadas para os Assinantes em execução no SQL Server 2005.
0x10000000000
Replica índices em colunas do tipo geography e geometry.
0x20000000000
Replica o atributo SPARSE para colunas. Para obter mais informações sobre esse atributo, consulte Usando colunas esparsas.
NULL
A replicação define schema_option automaticamente como um valor padrão, o valor de qual depende em outras propriedades de artigo. A tabela "Opções de Esquema Padrão" na seção Observações mostra as opções de esquema padrão com base no tipo de artigo e tipo de replicação.
O padrão para não publicações SQL Server é 0x050D3.
Nem todos os valores schema_option são válidos para cada tipo de replicação e tipo de artigo. A tabela Opções de Esquema Válido na seção Observações mostra as opções de esquema válidas que podem ser escolhidas com base na combinação de tipo de artigo e tipo de replicação.
[ @destination_owner =] 'destination_owner'
É o nome do proprietário do objeto de destino. destination_owner é sysname com um padrão NULL. Quando destination_owner não é especificado, o proprietário é especificado automaticamente baseado nas seguintes regras:Condição
Proprietário do objeto de destino
Publicação usa a cópia em massa do modo nativo para gerar o instantâneo inicial que só aceita assinantes SQL Server.
Assume o valor source_owner como padrão.
Publicado a partir de um não publicador SQL Server.
Assume o proprietário do banco de dados de destino como padrão.
A publicação usa a cópia em massa do modo de caractere para gerar o instantâneo inicial que só aceita assinantes SQL Server.
Não atribuído.
Para oferecer suporte a não assinantes SQL Server, destination_owner deve ser NULL.
[ @status=] status
Especifica se o artigo está ativo e opções adicionais para como as alterações são propagadas. status é tinyint e pode ser o produto de um ou mais desses valores | (Bitwise OR).Valor
Descrição
1
O artigo está ativo.
8
Inclui o nome da coluna nas instruções INSERT.
16 (padrão)
Usa instruções parametrizadas.
24
Inclui o nome da coluna nas instruções INSERT e usa instruções parametrizadas.
64
Identificado apenas para fins informativos. Sem suporte. A compatibilidade futura não está garantida.
Por exemplo, um artigo ativo que usa instruções com parâmetros teria um valor 17 nessa coluna. Um valor de 0 significa que o artigo está inativo e nenhuma propriedade adicional está definida.
[ @source_owner =] 'source_owner'
É o proprietário do objeto de origem. source_owner é sysname, com um padrão NULL. source_owner deve ser especificado para Publicadores Oracle.[ @sync_object_owner =] 'sync_object_owner'
É o proprietário da exibição que define o artigo publicado. sync_object_owner é sysname com um padrão NULL.[ @filter_owner =] 'filter_owner'
É o proprietário do filtro. filter_owner é sysname com um padrão NULL.[ @source_object =] 'source_object'
É o objeto do banco de dados a ser publicado. source_object é sysname com um padrão NULL. Se source_table for NULL, source_object não poderá ser NULL. source_object deve ser usado em vez de source_table. Para obter mais informações sobre os tipos de objetos que podem ser publicados usando replicação de instantâneo ou transacional, consulte Publicando dados e objetos de banco de dados.[ @artid = ] article_ID OUTPUT
É a ID do novo artigo. article_ID é int com um padrão NULL e é um parâmetro OUTPUT.[ @auto_identity_range = ] 'auto_identity_range'
Habilita e desabilita o intervalo de identidade automática trabalhando em uma publicação no momento em que ela é criada. auto_identity_range é nvarchar(5) e pode ser um dos seguintes valores:Valor
Descrição
true
Ativa a manipulação de intervalo de identidade automática.
false
Desabilita a manipulação de intervalo de identidade automática.
NULL (padrão)
A manipulação de intervalo de identidade é definida por identityrangemanagementoption.
Observação auto_identity_range foi substituído e fornecido apenas para compatibilidade com versões anteriores. Você deve usar identityrangemanagementoption para especificar as opções de gerenciamento do intervalo de identidades. Para obter mais informações, consulte Colunas de identidade de replicação.
[ @pub_identity_range = ] pub_identity_range
Controla o tamanho do intervalo no Publicador se o artigo tiver identityrangemanagementoption definido como auto ou auto_identity_range definido como verdadeiro. pub_identity_range for bigint, com um padrão NULL. Sem suporte para Publicadores Oracle.[ @identity_range = ] identity_range
Controla o tamanho do intervalo no assinante se o artigo tiver identityrangemanagementoption definido como auto ou auto_identity_range definido como verdadeiro. identity_range for bigint, com um padrão NULL. Usado quando auto_identity_range for definido como verdadeiro. Sem suporte para Publicadores Oracle.[ @threshold = ] threshold
É o valor percentual que controla quando o Distribution Agent atribui um novo intervalo de identidade. Quando uma porcentagem de valores especificada em threshold é utilizada, o Distribution Agent cria um novo intervalo de identidade. threshold é bigint, com um padrão NULL. Usado quando identityrangemanagementoption for definido como auto ou auto_identity_range for definido verdadeiro. Sem suporte para Publicadores Oracle.[ @force_invalidate_snapshot = ] force_invalidate_snapshot
Reconhece que a ação tomada por esse procedimento armazenado pode invalidar um instantâneo existente. force_invalidate_snapshot é um bit, sem um padrão de 0.0 especifica que a adição de um artigo não invalida o instantâneo. Se o procedimento armazenado detectar que a alteração requer um novo instantâneo, ocorrerá um erro e nenhuma alteração será feita.
1 especifica que adicionar um artigo pode invalidar o instantâneo e, se houver assinaturas existentes que exigem um novo instantâneo, dará permissão para que o instantâneo existente seja marcado como obsoleto e um novo instantâneo seja gerado.
[ @use_default_datatypes = ] use_default_datatypes
É se os mapeamentos de tipo de dados de coluna padrão são usados ao publicar um artigo de um Publicador Oracle. use_default_datatypes é bit, com um padrão de 1.1 = os mapeamentos de coluna de artigo padrão são usados. Os mapeamentos de tipo de dados padrão podem ser exibidos executando sp_getdefaultdatatypemapping.
0 = mapeamentos de coluna de artigo personalizados estão definidos e, portanto, sp_articleview não é chamado através de sp_addarticle.
Quando use_default_datatypes é definido como 0, você deve executar sp_changearticlecolumndatatype uma vez para cada mapeamento de coluna sendo alterado a partir do padrão. Após todos os mapeamentos de coluna personalizados tiverem sido definidos, você deve executar sp_articleview.
Observação Esse parâmetro só deve ser usado para Publicadores Oracle. Definir use_default_datatypes como 0 para um SQL Server Publicador gera um erro.
[ @identityrangemanagementoption = ] identityrangemanagementoption
Especifica como o gerenciamento do intervalo de identidade é tratado para o artigo. identityrangemanagementoption é nvarchar(10), e pode ser um dos seguintes valores.Valor
Descrição
none
A replicação não faz nenhum gerenciamento de intervalo de identidade explícito. Essa opção só é recomendada para compatibilidade com versões anteriores do SQL Server. Não permitido para replicação hierárquica.
manual
Marca a coluna de identidade usando NOT FOR REPLICATION para ativar tratamento de intervalo de identidade manual.
auto
Especifica o gerenciamento automático de intervalos de identidade.
NULL (padrão)
Assume none como padrão quando o valor de auto_identity_range não for true. Assume manual como padrão em uma topologia não hierárquica (auto_identity_range é ignorado).
Para compatibilidade com versões anteriores, quando o valor de identityrangemanagementoption for NULL, o valor de auto_identity_range é marcado. Porém, quando o valor de identityrangemanagementoption não for NULO, então o valor de auto_identity_range é ignorado.
Para obter mais informações, consulte Colunas de identidade de replicação.
[ @publisher = ] 'publisher'
Especifica um publicador não SQL Server. publisher é sysname, com um padrão NULL.Observação publisher não deve ser usado ao adicionar um artigo a um Editor SQL Server.
[ @fire_triggers_on_snapshot = ] 'fire_triggers_on_snapshot'
É se os gatilhos do usuário replicado são executados quando o instantâneo inicial é aplicado. fire_triggers_on_snapshot é nvarchar(5), com um padrão FALSE. true significa que os gatilhos do usuário em uma tabela replicada são executados quando o instantâneo é aplicado. Para gatilhos a serem replicados, o valor de bitmask de schema_option deve incluir o valor 0x100.
Valores de código de retorno
0 (êxito) ou 1 (falha)
Comentários
sp_addarticle é usado em replicação de instantâneo ou replicação transacional.
Por padrão, a replicação não publica quaisquer colunas na tabela de origem quando o tipo de dados de coluna não tiver suporte pela replicação. Se você precisar publicar tal coluna, você deve executar sp_articlecolumn para adicionar a coluna. Para obter mais informações, consulte Considerações sobre todos os tipos de replicação.
Ao adicionar um artigo a uma publicação que oferece suporte à replicação transacional não hierárquica, as seguintes restrições se aplicam:
Devem ser especificadas instruções parametrizadas para todos os artigos com base em log. Você deve incluir 16 no valor status.
O nome e proprietário da tabela de destino devem corresponder à tabela de origem.
O artigo não pode ser filtrado horizontal ou verticalmente.
Não há suporte para o gerenciamento de intervalo de identidade automática. Você deve especificar um valor manual para identityrangemanagementoption.
Se uma coluna timestamp existir na tabela, você deve incluir 0x08 na schema_option para replicar a coluna como timestamp.
Um valor de SQL não pode ser especificado para ins_cmd, upd_cmde del_cmd.
Para obter mais informações, consulte Replicação de transacional ponto a ponto.
Quando você publicar objetos, suas definições são copiadas aos Assinantes. Se você estiver publicando um objeto de banco de dados que depende de outros objetos, precisará publicar todos os objetos referenciados. Por exemplo, se você publicar uma exibição que depende de uma tabela, terá de publicar a tabela também.
Se vertical_partition for definido como verdadeiro, sp_addarticle deferirá a criação da exibição até sp_articleview ser chamado (após o último sp_articlecolumn ser adicionado).
Se a publicação permitir a atualização de assinaturas e a tabela publicada não tiver uma coluna uniqueidentifier, sp_addarticle adicionará uma coluna uniqueidentifier à tabela automaticamente.
Ao replicar para um assinante que não é uma instância do SQL Server (replicação heterogênea), somente instruções Transact-SQL têm suporte para os comandos INSERT, UPDATEe DELETE.
Quando o Agente de Leitor de Log estiver em execução, adicionar um artigo a uma publicação ponto a ponto poderá causar um deadlock entre o Agente de Leitor de Log e o processo que adiciona o artigo. Para evitar esse problema, antes de adicionar um artigo a uma publicação ponto a ponto, use o Monitor de Replicação para interromper o Agente de Leitor de Log no nó onde você está adicionando o artigo. Reinicie o Agente de Leitor de Log depois de adicionar o artigo.
Opções de esquema padrão
Esta tabela descreve o valor padrão definido pela replicação se schema_options não for especificado pelo usuário, sendo que esse valor depende do tipo de replicação (mostrado na parte superior) e do tipo de artigo (mostrado no final da primeira coluna).
Tipo de artigo |
Tipo de replicação |
|
---|---|---|
|
Transacional. |
Instantâneo |
apenas esquema agregado |
0x01 |
0x01 |
func schema only |
0x01 |
0x01 |
indexed view schema only |
0x01 |
0x01 |
exibição indexada com base em log |
0x30F3 |
0x3071 |
indexed view logbase manualboth |
0x30F3 |
0x3071 |
exibição indexada com base em log e filtro manual |
0x30F3 |
0x3071 |
exibição indexada com base em log e manual |
0x30F3 |
0x3071 |
logbased |
0x30F3 |
0x3071 |
logbased manualfilter |
0x30F3 |
0x3071 |
logbased manualview |
0x30F3 |
0x3071 |
execução do processo |
0x01 |
0x01 |
proc schema only |
0x01 |
0x01 |
execução do processo serializável |
0x01 |
0x01 |
view schema only |
0x01 |
0x01 |
Observação |
---|
Se uma publicação for habilitada quanto à atualização em fila, um valor schema_option de 0x80 será adicionado ao valor padrão mostrado na tabela. A schema_option padrão para uma publicação não SQL Server é 0x050D3. |
Opções de esquema válidas
Esta tabela descreve os valores permitidos de schema_option com base no tipo de replicação (mostrados na parte superior) e o tipo de artigo (mostrado na parte inferior da primeira coluna).
Tipo de artigo |
Tipo de replicação |
|
---|---|---|
|
Transacional. |
Instantâneo |
logbased |
Todas as opções |
Todas as opções, exceto 0x02 |
logbased manualfilter |
Todas as opções |
Todas as opções, exceto 0x02 |
logbased manualview |
Todas as opções |
Todas as opções, exceto 0x02 |
indexed view logbased |
Todas as opções |
Todas as opções, exceto 0x02 |
indexed view logbased manualfilter |
Todas as opções |
Todas as opções, exceto 0x02 |
indexed view logbased manualview |
Todas as opções |
Todas as opções, exceto 0x02 |
indexed view logbase manualboth |
Todas as opções |
Todas as opções, exceto 0x02 |
proc exec |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000 |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000 |
execução do processo serializável |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000 |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000 |
proc schema only |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000 |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000 |
view schema only |
0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 e 0x80000000 |
0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 e 0x80000000 |
func schema only |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000 |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000 |
indexed view schema only |
0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 e 0x80000000 |
0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 e 0x80000000 |
Observação |
---|
Para publicações de atualização em fila, os valores schema_option de 0x8000 e 0x80 devem ser habilitados. Os valores com suporte schema_option para publicações não SQL Server são: 0x01, 0x02, 0x10, 0x40, 0x80, 0x1000, 0x4000 e 0X8000. |
Exemplo
DECLARE @publication AS sysname;
DECLARE @table AS sysname;
DECLARE @filterclause AS nvarchar(500);
DECLARE @filtername AS nvarchar(386);
DECLARE @schemaowner AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @table = N'Product';
SET @filterclause = N'[DiscontinuedDate] IS NULL';
SET @filtername = N'filter_out_discontinued';
SET @schemaowner = N'Production';
-- Add a horizontally and vertically filtered article for the Product table.
-- Manually set @schema_option to ensure that the Production schema
-- is generated at the Subscriber (0x8000000).
EXEC sp_addarticle
@publication = @publication,
@article = @table,
@source_object = @table,
@source_owner = @schemaowner,
@schema_option = 0x80030F3,
@vertical_partition = N'true',
@type = N'logbased',
@filter_clause = @filterclause;
-- (Optional) Manually call the stored procedure to create the
-- horizontal filtering stored procedure. Since the type is
-- 'logbased', this stored procedures is executed automatically.
EXEC sp_articlefilter
@publication = @publication,
@article = @table,
@filter_clause = @filterclause,
@filter_name = @filtername;
-- Add all columns to the article.
EXEC sp_articlecolumn
@publication = @publication,
@article = @table;
-- Remove the DaysToManufacture column from the article
EXEC sp_articlecolumn
@publication = @publication,
@article = @table,
@column = N'DaysToManufacture',
@operation = N'drop';
-- (Optional) Manually call the stored procedure to create the
-- vertical filtering view. Since the type is 'logbased',
-- this stored procedures is executed automatically.
EXEC sp_articleview
@publication = @publication,
@article = @table,
@filter_clause = @filterclause;
GO
Permissões
Somente membros da função de servidor fixa sysadmin ou da função de banco de dados fixa db_owner podem executar sp_addarticle.
Consulte também