2008-08-19 40 views
11

Encontré hoy este error. Se pregunta si alguien me puede decir lo que quiere decir:SQL Server Tamaño máximo de fila

No se puede ordenar una fila de tamaño 9522, que es mayor que el máximo permitido de 8094.

es que 8094 bytes? ¿Caracteres? ¿Campos? ¿Es un problema unir varias tablas que exceden algún límite?

Respuesta

10

En SQL 2000, el límite de filas es 8K bytes, que es del mismo tamaño que una página en la memoria.

[Editar]

En 2005, el tamaño de la página es el mismo (8K), pero la base de datos utiliza punteros en la fila de la página para que apunte a otras páginas que contienen campos más grandes. Esto permite que 2005 supere la limitación del tamaño de fila 8K.

0

que solía ser un problema en SQL 2000, pero pensé que se fijó en 2005.

0

8094 bytes.

Si agrega algo más de información sobre lo que está haciendo, podría ayudarnos a descubrir la causa real.

7

El problema que parece atrapar a mucha gente, es que puede crear una tabla que por definición contendría más de 8K de datos, y lo aceptará perfectamente. Y la tabla funcionará bien, hasta el punto en que intente insertar más de 8K de datos en la tabla.

Digamos que crea una tabla con un campo entero para la clave principal y 10 campos varchar (1000). La tabla funcionaría bien la mayor parte del tiempo, ya que la cantidad de veces que llenaría los 10 campos varchar (1000) sería muy poca. Howerver, en el caso de que intentara poner 1000 caracteres en cada uno de sus campos, le daría el error mencionado en esta pregunta.

+0

@Erik Kibbee : Sí, tenemos varias tablas con filas que son demasiado grandes. He planteado el problema varias veces (nuestra base de datos es un desastre absoluto), pero es una tienda corporativa, y nadie quiere oír hablar de problemas estructurales. Desde el punto de vista de las cosas, NHibernate en realidad nos ha estado ocultando este problema por un tiempo. Pero todo explotó hoy en una llamada Eliminar (de todas las cosas). – TheSmurf

2

FYI, ejecutar este comando SQL en su base de datos puede solucionar el problema si es causada por el espacio que necesita ser recuperado después de caer columnas de longitud variable:

DBCC CLEANTABLE (0,[dbo.TableName]) 

Ver: http://msdn.microsoft.com/en-us/library/ms174418.aspx

Cuestiones relacionadas