Мне нужно изменить столбец с NOT NULL на NULL в таблице, содержащей миллионы строк. Я попробовал простой
alter table Table1 ALTER COLUMN Column1 XML NULL
но это занимает вечность. Итак, вот мои вопросы:
- Почему это так долго, чтобы применить альтер?
- Есть ли лучший способ сделать это?
источник
sp_rename
.Каждая строка должна быть затронута при изменении столбца с NOT NULL на NULL, поэтому для ее завершения требуется так много времени. Нет никакого способа сделать так, чтобы это заняло меньше времени.
источник
Другой вариант - создать новый столбец с правильным определением для рассматриваемой таблицы, обновить столбец данными из старого столбца, а затем удалить старый столбец.
Или Вы можете обратиться к более старому сообщению от SE, которое рассматривает подобную проблему в столбце INT.
/programming/4311559/sql-server-performance-for-alter-table-alter-column-change-data-type
источник
Если вы откроете монитор активности SQL во время выполнения команды, вы сможете узнать, действительно ли он его обрабатывает или ожидает какой-либо формы монопольной блокировки таблицы.
источник