According to this answer it's not directly possible. There is also an old support ticket to add the name of the column to this error message.
To find the reason you can disable this error by setting
set ANSI_WARNINGS OFF
insert the data and compare the maximum length of the column with current maximum length of the data. After that you can limit your search to columns that are filled to the maximum. For example you can use the following code (just change @TableName and @TableSchema):
DECLARE @TableName sysname = 'test', @TableSchema sysname = 'dbo'
DECLARE @SQL NVARCHAR(MAX)
SELECT @SQL = STUFF((SELECT
'
UNION ALL
select ' + QUOTENAME(Table_Name,'''') + ' AS Table_Name, ' +
QUOTENAME(Column_Name,'''') + ' AS ColumnName, MAX(' +
CASE WHEN DATA_TYPE IN ('XML','HierarchyID','Geometry','Geography','text','ntext')
THEN 'DATALENGTH(' ELSE 'LEN(' END + QUOTENAME(Column_Name) +
')) as [Max Length], ' + QUOTENAME(C.DATA_TYPE,'''') + ' AS Data_Type, ' +
CAST(COALESCE(C.CHARACTER_MAXIMUM_LENGTH, C.NUMERIC_SCALE,0) AS VARCHAR(10)) +
' AS Data_Width FROM ' + QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(Table_Name)
FROM INFORMATION_SCHEMA.COLUMNS C
WHERE TABLE_NAME = @TableName
AND table_schema = @TableSchema
--AND DATA_TYPE NOT IN ('XML','HierarchyID','Geometry','Geography')
ORDER BY COLUMN_NAME
FOR XML PATH(''),Type).value('.','varchar(max)'),1,11,'')
--print @SQL
EXECUTE (@SQL)
max(len(col1))for each column to find the bad column, and then find rows wherelen(col1) > [max allowable]to find the row(s). - BlorgbeardINSERT, all you're ever going to get is that generic error. - SlimsGhost