Преобразование ntext в nvcharmax (макс.) - ограничение размера

Я пытаюсь изменить существующий столбец 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]

Который завершает преобразование, перемещая данные из структуры лока в таблицу (если длина меньше чем 8k), что улучшает производительность/сохраняет правильные вещи.

Ответы

Ответ 1

Это, скорее всего, потому, что данные столбцаNVarChar не определены как NVARCHAR (max) Чтобы преобразовать столбец из NTEXT в NVARCHAR (MAX), используйте этот

alter table TBL alter column COL nvarchar(max)

Он будет выполнять преобразование данных в столбце для вас в то же время