I was trying to insert some data into a table and I got the error message
Msg 8152, Level 16, State 14, Line 1
String or binary data would be truncated.
Now I know that this was due to trying to insert data which was too big for the column (in this case a VARCHAR(50) ), but it got me thinking about whether or not it was possible to:
a) see what specific values would be truncated (bearing in mind that this could happen for multiple columns), perhaps by giving an output of all of the rows which would be truncated?
b) if within a batch insert there is any way of seeing for each column which would be truncated the maximum input data value (so I could see if the data storage type actually needs to be changed or if it’s only one or two cases which would not fit into the column?)
There is no particularly satisfactory way of finding the problematic rows.
This blog post has one solution. (
SET ANSI_WARNINGS OFFand insert into a staging table then useEXCEPTagainst the source to find rows that did not import successfully)