Modificações de tabela durante a execução da replicação do banco de dados (MS SQL 2008)

1

Estou executando o SQL Server 2008 Std com um banco de dados que está sendo publicado em uma "Publicação transacional" para um único assinante.

Não é possível fazer alterações nas tabelas do editor sem obter a opção "não é possível modificar a tabela porque ela está publicada para replicação". Isso parece estranho porque as alterações de esquema (ou scripts executados para fazer isso) devem ser enviadas ao assinante. Atualmente, temos que descartar todo o sistema de publicação para fazer alterações na tabela.

O que estou perdendo? Deve haver uma maneira de atualizar as tabelas do editor?

obrigado!

    
por typemismatch 16.06.2010 / 05:57

1 resposta

1

A modificação da tabela que você está tentando fazer provavelmente foi feita no designer de tabelas gráficas no SSMS. A implementação de mudanças na tabela através do designer gráfico é fraca.

Quando você salva as alterações, o SSMS é executado e copia a tabela inteira em uma nova tabela com o novo design incorporado, depois descarta a tabela 'antiga' e renomeia a nova para substituí-la.

Esteja ciente de que a ordenação de colunas é de pouca importância para as tabelas armazenadas no SQL Server, não há necessidade de adicionar novas colunas no 'meio' de uma tabela que não seja mais interessante: =)

Como sua tabela está em uma replicação transacional, o SSMS não pode executar a instrução da tabela suspensa de plano de fundo e você recebe a mensagem de erro que você anotou.

Para fazer as alterações que você deseja (adicionar ou soltar uma coluna), você precisa executar os comandos em T-SQL

ALTER TABLE dbo.Table ADD NewCol int NULL;
ALTER TABLE dbo.Table DROP COLUMN NewCol;

Por favor, note que a sintaxe do comando é inconsistente (obrigado MS!). Adicionar uma coluna não precisa / permitir que a palavra-chave COLUMN seja especificada, onde a queda exige isso.

Contanto que sua replicação esteja configurada corretamente para replicar alterações de esquema, esses comandos funcionarão e serão propagados para o assinante.

As alterações em uma tabela podem ser feitas dessa maneira, com exceção da alteração da chave primária. A PK é necessária para que a replicação transacional funcione e não pode ser alterada. Você precisaria remover o artigo da replicação se quisesse alterar essas colunas.

Espero que ajude.

    
por 01.07.2010 / 11:51