"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í?

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.