this answerによれば、直接可能ではありません。このエラーメッセージに列の名前を追加するために、古いsupport ticketもあります。
あなたがデータを挿入し、データの現在の最大長さと列の最大長さを比較
set ANSI_WARNINGS OFF
を設定することにより、このエラーを無効にすることができた理由を見つけるために。その後、最大値まで満たされた列に検索を制限することができます。たとえば、the following codeを使用できます(@TableNameと@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)
通知方法はありません。 [this](https://connect.microsoft.com/SQLServer/feedback/details/339410/please-fix-the-string-or-binary-data-would-be-truncated-message-to)に投票してください。 -give-the-column-name)機能!これを絞り込むには、各列に対して 'max(len(col1))'をチェックして不良列を見つけ、 'len(col1)> [max allowable]'行を見つける行を見つけてください。 – Blorgbeard
これは長すぎる文字列になる可能性が高いです。すべての値の文字列の長さを「測定」する方法がありますか?あなたが実際に 'INSERT'を試みるまで待っているのであれば、これまでに得られることは、一般的なエラーです。 – SlimsGhost
これはMSのこれまでの最悪の問題です。彼らは明らかに実行時にどの列がこれを引き起こすかを知っています...これを修正するための接続項目が何年もありましたが、それらは無視し続けています。これを把握するには、データを手動で見る必要があります。 UGH !!!! –