Creating or altering table '%.*ls' failed because the minimum row size would be %d, including %d bytes of internal overhead. This exceeds the maximum allowable table row size of %d bytes.

Error Message:
Msg 1701, Level 16, State 1, Line 4
Creating or altering table ‘%.*ls’ failed because the minimum row size would be %d, including %d bytes of internal overhead. This exceeds the maximum allowable table row size of %d bytes.

Severity level:
16.

Description:
This error message appears when you try to create a table for which the size of all columns together exceed the maximum allowable row size of 8060.

Consequences:
The T-SQL statement can be parsed, but causes the error at runtime.

Resolution:
Error of the Severity Level 16 are generated by the user and can be fixed by the SQL Server user. The statement cannot be executed this way. For most OLTP applications the maximum allowable row size of 8060 bytes (ignoring BLOB columns) is more than enough. When you come close to this limit, you should be considering rethinking you table design as it is likely that there are normalization problems.

Versions:
All versions of SQL Server.

Example(s):
USE tempDB
IF OBJECT_ID(‘t’) > 0
 DROP TABLE t
CREATE TABLE t
(
 c1 CHAR(8000)
 , c2 CHAR(8000)
)

Remarks:
In the above example we try to create the table t with two columns of the fixed length CHAR(8000) data type. This exceeds the maximum allowable row site and the error is raised. You can avoid this error message, when you change the data type to VARCHAR(8000). However this is no guarantee that you won’t get into trouble later on, when you try to save a row that exceeds the max size.

]]>

Leave a comment

Your email address will not be published.