sql-server – “更改表时,无法创建大小为8074的行,该行大于允许的最大行大小8060”

前端之家收集整理的这篇文章主要介绍了sql-server – “更改表时,无法创建大小为8074的行,该行大于允许的最大行大小8060”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试更改表中的列.现有表格如下:
CREATE TABLE [dbo].[table](
   [id1] [int] NOT NULL,[id2] [int] NOT NULL,[id3] [int] NOT NULL,[name] [nvarchar](255) NOT NULL,[id4] [int] NOT NULL,[xmlData] [xml](CONTENT [dbo].[xml_schema]) NULL,[booleanData1] [bit] NOT NULL,[notes] [varchar](4096) NULL,[id5] [int] NULL,[booleanData2] [bit] NULL,[id6] [int] NULL,CONSTRAINT [PK_table] PRIMARY KEY CLUSTERED 
   ([id1] ASC,[id2] ASC,[id3] ASC)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

现在我试图在这个表上执行这个sql

ALTER TABLE [table] ALTER COLUMN [xmlData] XML

这样我就可以删除xml架构并用新架构替换它.

但是我收到了这个错误

Cannot create a row of size 8074 which is greater than the allowable maximum row size of 8060.

谁能告诉我这里的问题是什么?

解决方法

如果先前已删除修改此表上的列,则可能需要在此操作成功之前回收空间. sql Server并不总是/通常立即为删除或更改的列回收空间.

如果先前的操作都是可变长度列的删除(或更改),则发出DBCC CLEANTABLE应该就足够了.否则,您将需要重建表.您可以通过重建聚集索引来完成此操作:

ALTER INDEX PK_table
ON dbo.table
REBUILD 
WITH (ONLINE = ON); -- Enterprise only,optional

猜你在找的MsSQL相关文章