"No se puede crear una fila de tamaño 8074 que sea mayor que el tamaño de fila máximo permitido de 8060" mientras se modifica la tabla

18

Estoy tratando de alterar una columna en una tabla. La tabla existente es así:

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]

Ahora estoy tratando de ejecutar este sql en esta tabla:

ALTER TABLE [table] ALTER COLUMN [xmlData] XML

para que pueda soltar el esquema xml y reemplazarlo por uno nuevo.

Pero recibo este error:

No se puede crear una fila de tamaño 8074 que sea mayor que el tamaño de fila máximo permitido de 8060.

¿Alguien puede decirme cuál es el problema aquí?

marc_s
fuente

Respuestas:

24

Si previamente eliminó o modificó columnas en esta tabla, es posible que necesite recuperar espacio antes de que esta operación tenga éxito. SQL Server no siempre / generalmente reclama inmediatamente espacio para columnas descartadas o alteradas.

Si las operaciones anteriores fueron todas las eliminaciones (o alteraciones) de columnas de longitud variable, la emisión DBCC CLEANTABLEdebería ser suficiente. De lo contrario, deberá reconstruir la tabla. Puede hacer esto reconstruyendo el índice agrupado:

ALTER INDEX PK_table
ON dbo.table
REBUILD 
WITH (ONLINE = ON); -- Enterprise only, optional
Paul White reinstala a Monica
fuente