我试图将现有的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),请使用此
alter table TBL alter column COL nvarchar(max)
它将同时为您执行列中的数据转换
关于sql - 将ntext转换为nvcharmax(max)-解决大小限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4708463/