Lesson Learned #444:Handling the "Row Value Expressions Exceeds Maximum Allowed" Error in SQL Server

  • Thread starter Thread starter Jose_Manuel_Jurado
  • Start date Start date
J

Jose_Manuel_Jurado

Some days ago, we faced the following error message: "Msg 10738, Level 15, State 1, Line 2 The number of row value expressions in the INSERT statement exceeds the maximum allowed number of 1000 row values." our customer is using ODBC Driver 18 for SQL Server and they got the previous message. With this complete error: Error: ('42000', '[42000] [Microsoft][ODBC Driver 18 for SQL Server][SQL Server]The number of row value expressions in the INSERT statement exceeds the maximum allowed number of 1000 row values. (10738) (SQLExecDirectW)').



Understanding the Error:



The error message you're encountering, often referred to as "Row Value Expressions Exceeds Maximum Allowed," occurs when you attempt to insert more than 1000 rows using a single INSERT statement. SQL Server has a built-in limitation that restricts the number of rows you can insert in one go to prevent performance and stability issues on the server.



Why Does It Happen?

This limitation exists to safeguard the server from processing excessively large insertions that could impact its performance negatively. By restricting the number of rows per INSERT statement, SQL Server can maintain a balance between data consistency and system resources.



Example of the script:



INSERT INTO MiTabla (ID, Edad) values
(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50),(1,50)



Solutions:

Now that we've established why this error occurs, let's explore some potential solutions to address it:



Batched Insertions:

One straightforward approach to overcome this limitation is to divide your data into smaller batches and perform multiple INSERT statements. For example, if you need to insert 2000 rows, split them into two batches of 1000 rows each and execute two separate INSERT statements.

-- First batch
INSERT INTO MiTabla (ID, , Age)
VALUES
-- 1000 rows here

-- Second batch
INSERT INTO MiTabla (ID, Age)
VALUES
-- 1000 rows here




Use Temporary Tables or Staging Tables:

Another approach is to use temporary tables or staging tables to hold your data temporarily. You can insert your data into these tables in smaller chunks and then transfer the data to the target table using a series of INSERT INTO ... SELECT statements.



-- Create a staging table
CREATE TABLE StagingTable (
ID INT,
Age INT
)

-- Insert data into the staging table in batches

-- Then transfer the data to the target table
INSERT INTO MiTabla (ID, Age)
SELECT ID, Age FROM StagingTable




Conclusion:

The "Row Value Expressions Exceeds Maximum Allowed" error in SQL Server serves as a safeguard to prevent excessive insertions in a single INSERT statement. By understanding why this error occurs and employing batched insertions or other strategies, you can efficiently manage and insert large datasets into your SQL Server database without encountering this limitation. You could find more information here: Table Value Constructor (Transact-SQL) - SQL Server | Microsoft Learn

Continue reading...
 
Back
Top