.png)
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 podemos fazer alterações nas tabelas do editor sem obter a mensagem "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 abandonar todo o sistema de publicação para fazer alterações nas tabelas.
o que estou perdendo? Deve haver uma maneira de atualizar as tabelas do editor?
obrigado!
Responder1
A modificação da tabela que você está tentando fazer provavelmente foi feita no designer gráfico da tabela no SSMS. A implementação de alterações de 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 ordem das colunas tem pouca importância para tabelas armazenadas no SQL Server, não há necessidade de adicionar novas colunas no 'meio' de uma tabela, a não ser que possa parecer melhor :=)
Como sua tabela está em uma replicação transacional, o SSMS não pode executar a instrução de eliminação da tabela em segundo plano e você receberá a mensagem de erro anotada.
Para fazer as alterações desejadas (adicionar ou eliminar 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;
Observe que a sintaxe do comando é inconsistente (obrigado MS!). Adicionar uma coluna não precisa/permite que a palavra-chave COLUMN seja especificada, onde a eliminação exige isso.
Contanto que sua replicação esteja configurada corretamente para replicar alterações de esquema, esses comandos funcionarão e serão propagados ao assinante.
As alterações em uma tabela podem ser feitas desta forma, 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.