Да, это в высшей степени выполнимо.
Добавление столбца, в котором NULL является приемлемым и не имеет значения по умолчанию, не требует долговременной блокировки для добавления данных в таблицу.
Если вы указали значение по умолчанию, то SQL Server должен перейти и обновить каждую запись, чтобы записать это новое значение столбца в строку.
Как это работает вообще:
+---------------------+------------------------+-----------------------+
| Column is Nullable? | Default Value Supplied | Result |
+---------------------+------------------------+-----------------------+
| Yes | No | Quick Add (caveat) |
| Yes | Yes | Long running lock |
| No | No | Error |
| No | Yes | Long running lock |
+---------------------+------------------------+-----------------------+
Оговоркой бит:
Я не помню, с верхней части моей головы, что происходит, когда вы добавляете столбец, который вызывает размер растрового изображения NULL будет расширен. Я хотел бы сказать, что растровое изображение NULL представляет собой допустимость всех столбцов
в настоящее время в строке, но я не могу наложить руку на свое сердце и сказать, что это определенно верно.
Редактировать -> @MartinSmith указал, что растровое изображение NULL будет расширяться только при изменении строки, большое спасибо. Однако, как он также указывает, если размер строки расширяется за пределы байта 8060 в SQL Server 2012, то a long running lock may still be required. Большое спасибо * 2.
Второй нюанс:
Попробуй.
Третий и последний нюанс:
Нет уж, проверить его.
У вас есть окна с низкой нагрузкой? –
Хотите, чтобы отдых таблицы с 'create as select' был быстрее? мы используем этот подход для оракула db. вам тогда нужно воссоздать все ограничения. – alko
Какую версию SQL Server вы используете? Если 2012, пожалуйста, укажите текущее определение таблицы и подробную информацию о новом столбце, который вы добавляете. –