Преобразование 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)
Он будет выполнять преобразование данных в столбце для вас в то же время