Recentemente, adicionei uma coluna de bits com capacidade NULL a uma tabela que possui quase 500 milhões de linhas. Não há um padrão na coluna, no entanto, todas as inserções estão especificando o valor 0 ou 1, e executei uma rotina única para atribuir 0 ou 1 a todas as linhas existentes (atualizando as linhas em pequenos lotes). Cada linha agora deve ter um 0 ou 1 nessa coluna.
Eu quero tornar a coluna de bits não anulável, no entanto, quando tentei fazê-lo ALTER TABLE t1 ALTER COLUMN c1 bit not null
, ela começou a funcionar por 3 minutos e eu a parei porque estava bloqueando todas as leituras da tabela e eu suspeitava que demoraria muito tempo para concluir . É possível que não demore muito, mas não pude arriscar muita indisponibilidade. A reversão em si levou 6 minutos.
Você tem alguma sugestão de como eu posso tornar a coluna não anulável sem levar horas para ser concluída? Além disso, existe alguma maneira de estimar quanto tempo a ALTER TABLE ALTER COLUMN
declaração que eu iniciei e cancelei levaria para ser concluída?
Estou usando o SQL Server 2017 Web Edition.
SELECT c1, count(*) FROM t1 GROUP BY c1
que levou cerca de 9 minutos para ser executado. AALTER TABLE ALTER COLUMN
declaração real depois disso levou 25 minutos para ser concluída. Não é tão ruim.