表の変更中に「許容される最大行サイズ8060より大きいサイズ8074の行を作成できません」


18

テーブルの列を変更しようとしています。既存のテーブルは次のとおりです。

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スキーマを削除して新しいスキーマに置き換えることができます。

しかし、私はこのエラーを受け取っています:

8060の許容最大行サイズより大きいサイズ8074の行を作成できません。

誰でもここで何が問題なのか教えてもらえますか?

回答:


24

この表の列を以前に削除または変更した場合、この操作が成功する前に領域を再利用する必要がある場合があります。SQL Serverは、常にまたは通常、ドロップまたは変更された列のスペースをすぐに再利用しません。

前の操作がすべて可変長列の削除(または変更)であった場合、発行DBCC CLEANTABLEで十分です。それ以外の場合は、テーブルを再構築する必要があります。これを行うには、クラスター化インデックスを再構築します。

ALTER INDEX PK_table
ON dbo.table
REBUILD 
WITH (ONLINE = ON); -- Enterprise only, optional
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.