"Tidak dapat membuat baris ukuran 8074 yang lebih besar dari ukuran maksimum baris yang diijinkan 8060" sambil mengubah tabel


18

Saya mencoba mengubah kolom dalam sebuah tabel. Tabel yang ada seperti ini:

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]

Sekarang saya mencoba menjalankan sql ini di tabel ini:

ALTER TABLE [table] ALTER COLUMN [xmlData] XML

sehingga saya bisa menghapus skema xml dan menggantinya dengan yang baru.

Tapi saya mendapatkan kesalahan ini:

Tidak dapat membuat baris ukuran 8074 yang lebih besar dari ukuran maksimum baris yang diijinkan 8060.

Adakah yang bisa memberi tahu saya apa masalahnya di sini?

Jawaban:


24

Jika sebelumnya Anda telah menghapus atau memodifikasi kolom pada tabel ini, Anda mungkin perlu merebut kembali ruang sebelum operasi ini berhasil. SQL Server tidak selalu / biasanya segera mendapatkan kembali ruang untuk kolom yang jatuh atau diubah.

Jika operasi sebelumnya semua pemindahan (atau perubahan) kolom panjang variabel, mengeluarkan DBCC CLEANTABLEharus cukup. Jika tidak, Anda harus membangun kembali tabel. Anda dapat melakukan ini dengan membangun kembali indeks berkerumun:

ALTER INDEX PK_table
ON dbo.table
REBUILD 
WITH (ONLINE = ON); -- Enterprise only, optional
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.