sql >> Base de Datos >  >> RDS >> Sqlserver

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

El error se debe a que no puede tener una fila en el servidor SQL que tenga más de 8 KB (el tamaño de 1 página) porque no se permite que las filas abarquen páginas; es un límite básico de SQL Server, puede leer más sobre esto aquí:

Tenga en cuenta que el servidor SQL le permitirá crear la tabla; sin embargo, si intenta insertar datos que abarquen varias páginas, obtendrá el error anterior.

Por supuesto, esto no encaja del todo, porque si lo anterior fuera toda la verdad, entonces solo VARCHAR(8000) columna llenaría una fila en una tabla! (Este solía ser el caso). SQL Server 2005 superó esta limitación al permitir que ciertos datos de una fila se almacenen en otra página y, en su lugar, dejar un puntero de 24 bytes. Puedes leer sobre esto aquí:

Como puede ver, esto ahora significa que las filas ahora pueden abarcar varias páginas, sin embargo, las filas de una sola columna aún deben caber en una sola página (por lo tanto, el tamaño máximo de una columna es VARCHAR(8000) ) y todavía hay un límite en el número total de tales columnas que puede tener (alrededor de 8000/24 ​​=~300 según mi estimación)

Por supuesto, a todo esto le falta el punto principal, que es que ¡400 columnas de ancho en una sola tabla es absurdo!

Debería analizar detenidamente el esquema de su base de datos y encontrar algo más razonable:podría comenzar eligiendo algunas estimaciones más conservadoras sobre los tamaños de columna (como VARCHAR(255) o VARCHAR(50) ), pero realmente necesita dividir algunos de esos campos en tablas separadas.