“Tabloyu değiştirirken 8074 boyutunda, izin verilen maksimum satır boyutundan 8060 daha büyük bir satır oluşturulamaz”


18

Tablodaki bir sütunu değiştirmeye çalışıyorum. Mevcut tablo şöyle:

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]

Şimdi bu sql bu tabloda yürütmek çalışıyorum:

ALTER TABLE [table] ALTER COLUMN [xmlData] XML

böylece xml şemasını bırakıp yenisiyle değiştirebilirim.

Ama bu hatayı alıyorum:

İzin verilen maksimum satır boyutundan 8060 daha büyük olan 8074 boyutunda bir satır oluşturulamaz.

Birisi bana sorunun ne olduğunu söyleyebilir mi?

Yanıtlar:


24

Bu tablodaki sütunları daha önce kaldırdıysanız veya değiştirdiyseniz, bu işlemin başarılı olması için alanı geri almanız gerekebilir. SQL Server her zaman / genellikle hemen bırakılan veya değiştirilen sütunlar için alan geri kazanmaz.

Önceki işlemlerin tümü değişken uzunluktaki sütunların kaldırılması (veya değiştirilmesi) olsaydı, DBCC CLEANTABLEbunu yapmak yeterli olmalıdır. Aksi takdirde, tabloyu yeniden oluşturmanız gerekir. Kümelenmiş dizini yeniden oluşturarak bunu yapabilirsiniz:

ALTER INDEX PK_table
ON dbo.table
REBUILD 
WITH (ONLINE = ON); -- Enterprise only, optional
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.