微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/mssql/79356.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐