「文字列またはバイナリデータが切り捨てられる」原因を確認する効率的な方法はありますか?


13

これは、この質問のフォローアップです。また、Microsoftからのこの機能要求に関連しています。

しかし、報告されてから長年が経過し、いくつかのメジャーリリースが市場に届きました。

質問: SQL Server 2017には、このエラーの根本原因の特定を容易にするメカニズムがありますか?または、問題が報告された約9年前と同じくらい調査するのは難しいですか?


私はこの単一のエラーのデバッグに少なくとも週に4時間を費やしており、SQLは仕事の説明にも含まれていません。
トニー

回答:


20

変更はありません。SQL Server 2017では、依然として同じあいまいなエラーメッセージが表示されますが、問題のある行/列を検出するメカニズムは提供されていません。

Connectが廃止されたとき、このConnectアイテムには1,600を超える票がありました。

マイクロソフトからの最新のコメントは次のとおりです。

最新の更新-それに取り組んでいる開発者は、完全な修正の作成に伴う課題を理解しています。挿入または更新のパフォーマンスに影響を与えないような方法で、完全なエラーメッセージを生成するために必要な列に関する情報を実際の変換関数に組み込むのは難しい場合があります。切り捨てられるデータのタイプと長さを記録するなど、短期的に安価なものを実装する場合があります。そのような修正がいつ公開されるかは、まだ時期尚早です。

私が提案できる最善の方法は、その項目に投票することです(そして、それについてコメントし、これがあなたに追加するビジネス価値を説明します)。


+1。(アプリケーションログがない場合)culprintを見つけるための非効率的な方法の1つを追加するには、プロファイラーとフィルターを使用します(host / user / app / query / etcによる)。また、これは便利
ジャン

3

このMDSNブログ投稿に示されているように、私たちの祈りは答えられました。

SQL Server 2019では、コンテキスト情報が追加された新しいメッセージが導入されています。

これで、エラーはさらに意味のあるものになります。

メッセージ2628、レベル16、状態1、行14文字列またはバイナリデータは、テーブル 'DbName.SchemaName.TableName'、列 'Col'で切り捨てられます。切り捨てられた値: '...'。

また、幸いなことに、この変更は2017年と2016年の両方でバックポートされる予定です。

この新しいメッセージは、SQL Server 2017 CU12(および今後のSQL Server 2016 SP2 CU)にもバックポートされますが、デフォルトではありません。セッションまたはサーバーレベルで、メッセージID 8152を2628に置き換えるには、トレースフラグ460を有効にする必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.