VARCHAR(MAX)型のパラメータを受け入れるSQLストアドプロシージャがあります。 私の知る限りでは、私は読んすべてによると、このような文字列の最大サイズは2GBです: MSDN文字列またはバイナリデータが切り捨てられるSQLエラー
何らかの理由で8キロバイトを超える文字列を渡すときに私が取得:
文字列かバイナリデータは切り捨てられます。
なぜこのエラーメッセージが表示され、解決できますか?
VARCHAR(MAX)型のパラメータを受け入れるSQLストアドプロシージャがあります。 私の知る限りでは、私は読んすべてによると、このような文字列の最大サイズは2GBです: MSDN文字列またはバイナリデータが切り捨てられるSQLエラー
何らかの理由で8キロバイトを超える文字列を渡すときに私が取得:
文字列かバイナリデータは切り捨てられます。
なぜこのエラーメッセージが表示され、解決できますか?
BoL(あなたが指定したリンク)によれば、解釈に違いがあります。 クエリ(n個の部分)で使用できる最大量は8000です。ストレージのために、varchar(max)はディスク上で2GBを処理できます。
これは、クエリと格納のためのデータ型の解釈に過ぎません。結論では、クエリでは8000文字しか使用できません。
この問題を回避するために、あなたはvarchar(max)
に最初に文字列をキャストする必要があります。
column = cast(other_column as varchar(max))
このようmaxよりも長い任意の文字列は、(8000または4000、バージョンによって異なります)最大の長さに切り捨てられます。
文字列をより大きいをデータベースの列よりも右に渡していますか? 列のサイズを大きくしてみてください。
文字列より大きい文字列をデータベースに渡しています。データベーステーブルのよう
は以下の通りです:
EXECUTIVE varchar(15)
しかし、あなたの挿入文字列(vb.net中)のように:
cmd.Parameters.Add("@EXECUTIVE", Data.SqlDbType.VarChar, 150).Value = CmbExecutive.Text.ToString()
あなたがストアドプロシージャを投稿し、コード –
を呼び出します示唆しますあなたはprocの残りの部分を投稿することができますか?そのパラメータとは無関係かもしれません。 – SteveCav
実際には、この文書は明確ではありません。あなたが "max"と書くのを除いて、限界は8kだと思われます...しかし、oracle dbmsを使って知っているのは、varcharが4kに制限されていることです。私は間違っているかもしれませんが、私は慎重にチェックしていませんし、私は巨大なデータのためにclob/blobを好むでしょう – ShinTakezou