1

XML4000 文字を超える文字をストアド プロシージャに渡そうとしています。NTEXTNVARCHAR(MAX)VARCHAR(MAX)VARCHAR(8000)およびをパラメータ タイプとして使用しようとしましXMLたが、常にエラーが発生します。

System.Data.SqlClient.SqlException: 文字列またはバイナリ データが切り捨てられます。ステートメントは終了されました。

値はテーブルに格納されていません。それは、データが選択されてテーブルに格納されている変数にすぎません。

ASP.NET は 4000 文字を超える文字をパラメーターとして送信できませんか? または、オフにできる SQL Server の設定はありますか?

ありがとう、

トーマス

編集:

これは で動作していNTEXTます。エラーの詳細を調べたところ、エラーの原因となっている SQL の行が見つかりました。まったく無関係な列が設定されていたことがわかりましVARCHAR(50)た。謝罪いたします。VARCHAR(MAX)XML

4

3 に答える 3

2

XML を小さなチャンクに分割し、それらを別の変数に割り当ててから連結します

DECLARE @SQL1,@SQL2

SET @SQL1=チャンク1

SET @SQL2=チャンク2

SET @SQLn=チャンクn

exec (@SQL1+@SQL2.....+@SQLn)

于 2012-05-04T15:45:18.083 に答える
1

これは、すべてのエディションでの SQL サーバーの制限です。xml を 2 つの varchar 変数に分割し、それらをストアド プロシージャにマージできます。これは、問題の回避策です。

于 2012-05-04T10:39:07.527 に答える
0

これを行うにはいくつかの方法があるようです。これが私が最近行った方法です。

于 2012-07-13T21:12:37.533 に答える