Không thể tạo một hàng có kích thước 8074 lớn hơn kích thước hàng tối đa cho phép là 8060, trong khi thay đổi bảng


18

Tôi đang cố gắng thay đổi một cột trong bảng. Bảng hiện có là như thế này:

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]

Bây giờ tôi đang cố gắng thực hiện sql này trên bảng này:

ALTER TABLE [table] ALTER COLUMN [xmlData] XML

để tôi có thể bỏ lược đồ xml và thay thế nó bằng lược đồ mới.

Nhưng tôi nhận được lỗi này:

Không thể tạo một hàng có kích thước 8074 lớn hơn kích thước hàng tối đa cho phép là 8060.

Bất cứ ai có thể cho tôi biết vấn đề ở đây là gì?

Câu trả lời:


24

Nếu trước đây bạn đã xóa hoặc sửa đổi các cột trên bảng này, bạn có thể cần phải lấy lại không gian trước khi thao tác này thành công. SQL Server không phải luôn luôn / thường lấy lại không gian ngay lập tức cho các cột bị mất hoặc bị thay đổi.

Nếu các hoạt động trước đó là tất cả các lần xóa (hoặc thay đổi) của các cột có độ dài thay đổi, việc phát hành DBCC CLEANTABLEphải là đủ. Nếu không, bạn sẽ cần phải xây dựng lại bảng. Bạn có thể làm điều này bằng cách xây dựng lại chỉ mục được nhóm:

ALTER INDEX PK_table
ON dbo.table
REBUILD 
WITH (ONLINE = ON); -- Enterprise only, optional
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.