Eu corri para este problema para o meu trabalho também. E minha solução está junto #2.
Aqui estão meus passos (estou usando o SQL Server 2005):
1) Adicione a coluna à tabela com um valor padrão:
ALTER TABLE MyTable ADD MyColumn varchar(40) DEFAULT('')
2) Adicione um
NOT NULL
restrição com o NOCHECK
opção. O NOCHECK
não se aplica a valores existentes:ALTER TABLE MyTable WITH NOCHECK
ADD CONSTRAINT MyColumn_NOTNULL CHECK (MyColumn IS NOT NULL)
3) Atualize os valores de forma incremental na tabela:
GO
UPDATE TOP(3000) MyTable SET MyColumn = '' WHERE MyColumn IS NULL
GO 1000
-
A instrução de atualização atualizará apenas no máximo 3.000 registros. Isso permite salvar um pedaço de dados no momento. Eu tenho que usar "MyColumn IS NULL" porque minha tabela não possui uma chave primária de sequência.
-
GO 1000
executará a instrução anterior 1000 vezes. Isso atualizará 3 milhões de registros, se precisar de mais é só aumentar esse número. Ele continuará a ser executado até que o SQL Server retorne 0 registros para a instrução UPDATE.