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.
Importante |
---|
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. |
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.
Importante |
---|
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)