Eu preciso alterar uma coluna de NOT NULL para NULL em uma tabela que contém milhões de linhas. Eu tentei uma simples
alter table Table1 ALTER COLUMN Column1 XML NULL
mas leva uma eternidade. Então, aqui estão as minhas questões:
- Por que demora tanto tempo para aplicar a alteração?
- Tem algum jeito melhor de fazer isso?
fonte
sp_rename
.Cada linha precisa ser tocada ao alterar a coluna de NOT NULL para NULL, e é por isso que leva tanto tempo para ser concluída. Não há como fazê-lo levar menos tempo.
fonte
Outra opção é criar uma nova coluna com definição correta para a tabela em questão, atualizar a coluna com dados da coluna antiga e soltar a coluna antiga.
Ou você pode consultar uma postagem mais antiga do SE que trata de um problema semelhante em uma coluna INT.
/programming/4311559/sql-server-performance-for-alter-table-alter-column-change-data-type
fonte
Se você abrir o monitor de atividades SQL enquanto o comando estiver em execução, poderá saber se ele está realmente processando-o ou se está aguardando alguma forma de bloqueio exclusivo da tabela.
fonte