In SQL Server, a table can contain a maximum of 8,060 bytes per row excluding VARCHAR, NVARCHAR, VARBINARY and some other variable length types.
Informix does not have such limitation:
Informix:
CREATE TABLE items ( c1 CHAR(2000), c2 CHAR(2000), c3 CHAR(2000), c4 CHAR(2000), c5 CHAR(2000) ); # Table created.
So this CREATE TABLE statement fails in SQL Server:
SQL Server:
CREATE TABLE items ( c1 CHAR(2000), c2 CHAR(2000), c3 CHAR(2000), c4 CHAR(2000), c5 CHAR(2000) ); # Msg 1701, Level 16, State 1, Line 1 # Creating or altering table 'items' failed because the minimum row size would be 10007, # including 7 bytes of internal overhead. This exceeds the maximum allowable table row size of 8060 bytes.
But if you change at least one column to VARCHAR data type, the table can be created successfully:
SQL Server:
CREATE TABLE items ( c1 CHAR(2000), c2 CHAR(2000), c3 CHAR(2000), c4 CHAR(2000), c5 VARCHAR(2000) -- Changed CHAR to VARCHAR ); # Commands completed successfully.
When you migrate a table from Informix database to SQL Server and get “This exceeds the maximum allowable table row size of 8060 bytes” error, you can use -char_to_varchar_length option in SQLines Data tool that allows you to automatically convert CHAR(n) columns starting from the specified length to VARCHAR(n).
For more information, see Informix to SQL Server Migration.