Existe uma maneira fácil de adicionar um script de migração personalizado para scripts de SQL Compare?
Pergunta
No meu trabalho atualmente estamos tendo algumas dores graves empurrando nossas mudanças de banco de dados entre ambientes. A questão começa a aparecer quando criamos uma nova coluna não anulável em uma tabela existente. O script que SQL Compare gera cria a coluna como não anulável, por isso vai sempre falhar. Eu estava esperando que havia alguma alternativa a ter que editar manualmente o script. Existe alguma maneira de contornar este problema? Se não, como é que vocês lidar com isso?
Solução
Criar uma tabela:
create table #bingo ( id int )
Adicionar um valor:
insert into #bingo values (1)
Adicionar uma nova coluna:
alter table #bingo add userid int
Preencher a nova coluna:
update #bingo set userid = 1 where id = 1
Alterar a nova coluna não anulável:
alter table #bingo alter column userid int not null
Você teria que editar manualmente o RedGate Sql Comparar para que ele funcione como esta.
Outras dicas
Como você planeja sobre o preenchimento da coluna NOT NULL? Eu não vejo como SQL Compare poderia realmente chegar a uma solução, uma vez que não tem nenhuma maneira de saber como é que você preenchê-lo.
Você pode criar a coluna com um padrão, simplesmente adicionar uma instrução de atualização no final dos scripts gerados para adequadamente atualizar a coluna se você tem alguma fonte para os valores.
adicionar um padrão para a nova coluna não nulo
quando criar uma nova coluna não nulo, qual o valor que todas as linhas existentes começar? Se você não sabe, fazer a anulável coluna.