Я удалил свой предыдущий ответ, в котором утверждалось, что это будет изменение только метаданных, и отправляю новый с совершенно другим выводом!
Хотя это верно для изменения до nvarchar(4000)
в случае изменения на nvarchar(max)
операция кажется чрезвычайно дорогой.SQL Server добавит новый столбец переменной длины и скопирует ранее существующие данные, что, вероятно, будет означать трудоемкую операцию блокировки, приводящую к многочисленным разбиениям страниц и как внутренней, так и логической фрагментации.
Это видно из приведенного ниже
CREATE TABLE T
(
Foo int IDENTITY(1,1) primary key,
Bar NVARCHAR(256) NULL
)
INSERT INTO T (Bar)
SELECT TOP 4 REPLICATE(CHAR(64 + ROW_NUMBER() OVER (ORDER BY (SELECT 0))),50)
FROM sys.objects
ALTER TABLE T ALTER COLUMN Bar NVARCHAR(MAX) NULL
Затем, просматривая страницу в средстве просмотра SQL Server, вы увидите:

Белый 41 00 ...
- пустое пространство из предыдущей версии столбца.