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.
Importante |
---|
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. |
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.
Importante |
---|
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.
Consulte também