"Добавьте столбец, а затем выполните относительно небольшие пакеты ОБНОВЛЕНИЯ, чтобы заполнить столбец значением по умолчанию. Это должно предотвратить любые заметные замедления"
И после этого вы должны установить для столбца значение NOT NULL, которое сработает в одной большой транзакции. Так что все будет работать очень быстро, пока вы не сделаете это, так что вы, вероятно, получили очень мало на самом деле. Я знаю это только из первых рук.
Возможно, вы захотите переименовать текущую таблицу из X в Y. Вы можете сделать это с помощью этой команды sp_RENAME '[OldTableName]', '[NewTableName]'.
Воссоздайте новую таблицу как X с новым столбцом, установленным на NOT NULL, а затем пакетной вставкой от Y до X и включите значение по умолчанию либо в вставку для нового столбца, либо поместив значение по умолчанию в новый столбец при повторном создании таблица X.
Я внес изменения такого типа в таблицу с сотнями миллионов строк. Это все еще заняло больше часа, но это не взорвало наш транс-журнал. Когда я попытался просто изменить столбец на NOT NULL со всеми данными в таблице, потребовалось более 20 часов, прежде чем я завершил процесс.
Вы тестировали, просто добавляя столбец, заполняя его данными и устанавливая для столбца значение NOT NULL?
Так что, в конце концов, я не думаю, что есть волшебная пуля.