INSERTやUPDATEの際、テーブルのカラムサイズを超えるデータを入力すると下記のエラーが発生します。
メッセージ8152、レベル16、状態6、プロシージャProcedureName、LineLinenumber 文字列またはバイナリデータは切り捨てられます。
挿入、更新するカラムが多いとどのカラムのデータがエラーなのか分かりづらいときがあります。
そんな時、トレースフラグの460を有効化すると、どのカラムがエラーで、切り捨てられた後の値を表示することができます。
DBCC TRACEON (460, -1);
メッセージ2628、レベル16、状態6、プロシージャProcedureName、行Linenumber 文字列またはバイナリデータは、テーブル '%。* ls'、列 '%。* ls'で切り捨てられます。 切り捨てられた値: '%。* ls'。
DBCC TRACEON – トレース フラグ (Transact-SQL)
注: このトレース フラグは、SQL Server 2017 (14.x) CU12 以降のビルドに適用されます。
注: データベース互換性レベル 150 からはメッセージ ID 2628 が既定値となり、このトレース フラグに影響がありません。
KB4468101: SQL Server 2016 および2017の拡張された情報を使って、”文字列またはバイナリデータの代わりに省略可能” というメッセージが表示される
この改善点は、 SQL Server の次の累積的な更新プログラムに含まれています。
SQL Server 2017 の累積更新プログラム12
SQL Server 2016 SP2 の累積更新プログラム6
SQL Server 2012では、460を有効化しても、2628のメッセージは出力されませんでした。
1レコードの中にカラムサイズを超えるデータが複数あっても、1個しか出力されません。