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

Observação importanteImportante

Esse procedimento armazenado foi preterido e só tem suporte para compatibilidade com versões anteriores. Só deve ser usado com Editores 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 aprensentadas no SQL Server 2005 ou SQL Server 2008.

Ícone de vínculo de tópico Convenções da 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 está sendo 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 será o parâmetro column, enquanto a definição da coluna, char(1) NOT NULL CONSTRAINT constraint_name DEFAULT 'N' será 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 é nvarchar(4000), com um padrão de 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 de NULL. A replicação permite procedimentos armazenados personalizados definidos pelo usuário, para substituir 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 utilizado para executar uma destas operaçõ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 de 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 a capacidade de fazer com que a assinatura seja reinicializada. force_reinit_subscription é um bit com um padrão de 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 Fazer alterações de esquema em bancos de dados de publicação.

sp_repladdcolumn ainda é requerido na propagação de alterações DDL de Assinantes de republicação que executam uma versão anterior de Assinantes do 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 em um artigo que pertença 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 personalizados INSERT/UPDATE/DELETE não serão regenerados 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 subsequentes. 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 for adicionada 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 após a execução de sp_repladdcolumn. Falha nesse procedimento pode causar uma falha de mesclagem depois da restauração de um banco de dados de publicação.

Permissões

Apenas membros da função de servidor fixa sysadmin e da função de banco de dados fixa db_owner podem executar sp_repladdcolumn.

Consulte também

Referência

Procedimentos armazenados do sistema (Transact-SQL)

Conceitos

Recursos preteridos em Replicação do Microsoft SQL Server