sql - 将ntext转换为nvcharmax(max)-解决大小限制

标签 sql nvarchar

我试图将现有的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/

相关文章:

sql - nvarchar 类型的唯一列

sql - 将 nvarchar 转换为 int 以在 View 中加入 SQL 表

mysql - 查询失败 您的 SQL 语法有错误;第 1 行 'DESC' 附近

sql - 奇怪的 SQL Server 2012 IDENTITY 问题

MySQL查询股票交易到达情况

sql - 在单个查询中对记录进行分层检索

sql-server - 在 SQL Server 中什么时候必须使用 NVARCHAR/NCHAR 而不是 VARCHAR/CHAR?

sql-server-2008-r2 - nvarchar 到时间的转换

sql - 如何在 DolphinDB 中加载文本文件的指定列?