Я пытаюсь изменить существующий столбец SQL NText на nvcharmax (max) , и обнаружил ошибку ограничения размера. Существует большое количество существующих данных, некоторые из которых, я полагаю, превышают предел в 8 КБ.
Мы собираемся преобразовать это, чтобы поле можно было искать в LINQ.
2x SQL-выражения, которые я пробовал:
update Table
set dataNVarChar = convert(nvarchar(max), dataNtext)
where dataNtext is not null
update Table
set dataNVarChar = cast(dataNtext as nvarchar(max))
where dataNtext is not null
И ошибка, которую я получаю:
Cannot create a row of size 8086 which is greater than the allowable maximum row size of 8060.
Это использует SQL Server 2008.
Любая помощь приветствуется,
Спасибо.
Обновление / Решение:
Помеченный ответ ниже является правильным, и SQL 2008 может изменить столбец на правильный тип данных в моей ситуации, и нет никаких драм с приложением, использующим LINQ, которое мы используем поверх него:
alter table [TBL] alter column [COL] nvarchar(max)
Мне также посоветовали дополнить его:
update [TBL] set [COL] = [COL]
Что завершает преобразование, перемещая данные из структуры lob в таблицу (если длина меньше 8 КБ), что повышает производительность / поддерживает правильность работы.