加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 06:20:10 所属栏目:MsSql教程 来源:网络整理
导读:我正在尝试更改表中的列.现有表格如下: 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,[booleanD
我正在尝试更改表中的列.现有表格如下:
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读