我正在尝试将现有的sql NText列更改为nvcharmax(max),并在大小限制上遇到错误.有大量的现有数据,其中有些超过了8k的限制,我相信.
我们正在寻找转换,以便该字段可在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结构移动到表(如果长度小于8k)来完成转换,从而提高性能/保持正确.
解决方法
这很可能是因为列datanVarChar未定义为NVARCHAR(max)
要将列从NTEXT转换为NVARCHAR(MAX),请使用此项
要将列从NTEXT转换为NVARCHAR(MAX),请使用此项
alter table TBL alter column COL nvarchar(max)
它将同时对您的列中的数据进行转换