【发布时间】:2010-11-15 21:48:44
【问题描述】:
当我将 table alter 列从 nvarchar(4000) 更改为 nvarchar(max) 时出现此错误:
无法创建大于允许的最大值 8060 的大小为 8064 的行
我已经查看了类似的问题,但我仍然无法解释为什么这不起作用
Converting nvarchar(4000) to nvarchar(max)
Cannot create a row of size 8064 which is greater than the allowable row size of 8060
我也尝试将 alter 语句替换为添加列并更新:
之前:
alter table myTable alter column myColumn nvarchar(max)
之后:
exec sp_rename 'dbo.myTable.myColumn', 'myColumn_old', 'COLUMN'
GO
alter table myTable add myColumn nvarchar(max)
GO
update myTable set myColumn = myColumn_old
但我仍然遇到同样的错误。
如何更新此专栏以及这里发生了什么?
【问题讨论】:
-
表格与其他列的整体边是什么?
-
@Mitchel - int (4), char (1), varchar (92), char (36), datetime (8), int (4), nvarchar (-1), int (4 ), nvarchar (4000) 最后一个是不会转换的。奇怪的是,您会注意到另一个转换为 ok 的 nvarchar(-1)
-
只是为了测试,能不能把nvarchar转成ntext?
-
@stealthyninja - 感谢您的输入,但这是一个非常大的表,一旦我完成了更新,我必须恢复才能返回。如果您能告诉我这可能有什么帮助或可能证明什么,我肯定会对此进行测试。
标签: sql-server sql-server-2005