테이블을 변경하는 동안“허용 가능한 최대 행 크기 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.