Compartilhar via


sp_repladdcolumn (Transact-SQL)

Adiciona uma coluna a um artigo de tabela existente que foi publicado. Permite que a nova coluna seja adicionada a todos os Publicadores que publicam essa tabela, ou simplesmente adiciona a coluna a uma publicação específica que publica a tabela. Esse procedimento armazenado é executado no Publicador, no banco de dados de publicação.

Observação importanteImportante

Esse procedimento armazenado foi preterido e só tem suporte para compatibilidade com versões anteriores. Só deve ser usado com Publicadores Microsoft SQL Server 2000 e Assinantes de republicação SQL Server 2000. Esse procedimento não deve ser usado em colunas com tipos de dados que foram apresentadas no SQL Server 2005 ou SQL Server 2008.

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

Sintaxe

sp_repladdcolumn [ @source_object = ] 'source_object', [ @column = ] 'column' ]
    [ , [ @typetext = ] 'typetext' ]
    [ , [ @publication_to_add = ] 'publication_to_add' ]
    [ , [ @from_agent = ] from_agent ]
    [ , [ @schema_change_script = ] 'schema_change_script' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]

Argumentos

  • [ @source_object =] 'source_object'
    É o nome do artigo de tabela que contém a nova coluna a ser adicionada. source_object é nvarchar(358), sem padrão.

  • [ @column =] 'column'
    É o nome da coluna na tabela a ser adicionada para replicação. column é sysname, sem padrão.

  • [ @typetext =] 'typetext'
    É a definição da coluna que é adicionada. typetext é nvarchar(3000), sem padrão. Por exemplo, se a coluna order_filled estiver sendo adicionada e for um campo de um único caractere, não NULL, e tiver um valor padrão N, order_filled seria o parâmetro column, enquanto a definição da coluna, char(1) NOT NULL CONSTRAINT constraint_name DEFAULT 'N' seria o valor de parâmetro typetext.

  • [ @publication_to_add =] 'publication_to_add'
    É o nome da publicação à qual a nova coluna é adicionada. publication_to_add is nvarchar(4000), com um padrão ALL. Se for ALL, todas as publicações que contêm essa tabela serão afetadas. Se publication_to_add for especificado, somente esta publicação terá a nova coluna adicionada.

  • [ @from_agent = ] from_agent
    Se o procedimento armazenado estiver sendo executado por um agente de replicação. from_agent é int, com um padrão 0, onde um valor de 1 é usado quando esse procedimento armazenado está sendo executado por um agente de replicação; em qualquer outro caso, o valor padrão 0 deve ser usado.

  • [ @schema_change_script =] 'schema_change_script'
    Especifica o nome e o caminho de um script do SQL Server usado para modificar os procedimentos armazenados personalizados gerados pelo sistema. schema_change_script é nvarchar(4000), com um padrão NULL. A replicação permite que procedimentos armazenados personalizados definidos pelo usuário substituam um ou mais dos procedimentos padrão usados em replicação transacional. schema_change_script é executado depois que uma alteração de esquema é feita em um artigo de tabela replicado usando sp_repladdcolumn, e pode ser usado em uma das seguintes situações:

    • Se os procedimentos armazenados personalizados forem gerados novamente automaticamente, schema_change_script pode ser usado para descartar esses procedimentos armazenados personalizados e substituí-los por procedimentos armazenados personalizados definidos pelo usuário, que oferecem suporte ao novo esquema.

    • Se os procedimentos armazenados personalizados não forem gerados novamente automaticamente, schema_change_script pode ser usado para gerar novamente esses procedimentos armazenados ou criar procedimentos armazenados personalizados definidos pelo usuário.

  • [ @force_invalidate_snapshot = ] force_invalidate_snapshot
    Habilita ou desabilita a capacidade de ter um instantâneo invalidado. force_invalidate_snapshot é um bit, com um padrão 1.

    1 especifica que as alterações no artigo podem invalidar o instantâneo e, se esse for o caso, um valor de 1 dará permissão para que ocorra um novo instantâneo.

    0 especifica que as alterações no artigo não invalidam o instantâneo.

  • [ @force_reinit_subscription = ] force_reinit_subscription
    Habilita ou desabilita o recurso de reinicialização de assinatura. force_reinit_subscription é um bit com um padrão 0.

    0 especifica que as alterações no artigo não fazem com que a assinatura seja reiniciada.

    1 especifica que as alterações no artigo podem fazer com que a assinatura seja reiniciada e, se esse for o caso, um valor de 1 dará permissão para que a reinicialização da assinatura ocorra.

Valores de código de retorno

0 (êxito) ou 1 (falha)

Comentários

sp_repladdcolumn foi preterido e só é fornecido para compatibilidade com versões anteriores. A adição de uma coluna a um artigo de tabela replicado só deve ser feita executando comandos DDL (linguagem de definição de dados) na tabela publicada. A replicação replica automaticamente esses comandos DDL, contanto que replicação de DDL tenha sido habilitada. Para obter mais informações, consulte Fazendo alterações de esquema em bancos de dados de publicação.

sp_repladdcolumn também é requerido ao propagar alterações de DDL dos Assinantes de republicação que executam uma versão anterior de Assinantes SQL Server 2000.

sp_repladdcolumn é usado para todos os tipos de replicação.

Ao usar sp_repladdcolumn, se uma alteração de esquema for feita a um artigo que pertence a uma publicação que usa um pacote DTS (Data Transformation Services), a alteração de esquema não será propagada para o Assinante e os procedimentos armazenados INSERT/UPDATE/DELETE não serão gerados novamente nos Assinantes. O usuário precisa gerar novamente o pacote DTS manualmente e efetuar a alteração de esquema correspondente nos Assinantes. Se a atualização de esquema não for aplicada, o Distribution Agent não poderá aplicar modificações subseqüentes. Antes de fazer uma alteração de esquema, verifique se não há transações pendentes a serem entregues.

Quando se atribui um valor padrão a typetext que não seja uma função não-determinística (por exemplo, 'datetime not null default getdate()'), pode ocorrer não-convergência após a adição da nova coluna porque a função é executada no assinante para que um valor padrão seja carregado na coluna.

Carimbo de data e hora e colunas computadas são filtradas para publicações em modo de caractere. Se um carimbo de data e hora ou uma coluna computada forem adicionados usando sp_repladdcolumn, as assinaturas de tais publicações não receberão essa nova coluna.

Observação importanteImportante

Um backup do banco de dados de publicação deve ser executado depois que sp_repladdcolumn é executado. Falha nesse procedimento pode causar uma falha de mesclagem depois da restauração de um banco de dados de publicação.

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