加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 数据库 > MsSql > 正文

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

发布时间:2020-05-28 19:08:57 所属栏目: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] [xm

我正在尝试更改表中的列.现有表格如下:

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

(编辑:安卓应用网)

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

    推荐文章
      热点阅读