web-dev-qa-db-ja.com

文字列またはバイナリデータが切り捨てられるSQLエラー

タイプVARCHAR(MAX)のパラメーターを受け入れるSQLストアード・プロシージャーがあります。私が知る限り、そして私が読んだすべてによれば、そのような文字列の最大サイズは2GBです: [〜#〜] msdn [〜#〜]

何らかの理由で、8KBより大きい文字列を渡すと、次のようになります。

文字列型やバイナリは省略されます。

このエラーメッセージが表示されるのはなぜですか?どうすれば解決できますか?

9
Lior Ohana

BoL(指定したリンク)によると、解釈に違いがあります。クエリで使用できる最大量(n部)は8000です。ストレージの目的で、varchar(max)はディスク上の2GBを処理できます。

これは、クエリと格納を目的としたデータ型の解釈にすぎません。つまり、クエリでは8000文字しか使用できません。

8
Mark Kremers

この問題を回避するには、最初に文字列をvarchar(max)にキャストする必要があります。

column = cast(other_column as varchar(max))

このようにして、max(バージョンによっては8000または4000)より長い文字列は、最大長に切り捨てられます。

8
knittl

文字列biggerをデータベースの列よりも渡していますよね?列のサイズを大きくしてみてください。

1
Junior M

データベースのstringより大きいstringを渡しています。

あなたのデータベーステーブルのように次のとおりです:

 EXECUTIVE  varchar(15) 

しかし、(vb.net)のような挿入文字列:

cmd.Parameters.Add("@EXECUTIVE", Data.SqlDbType.VarChar, 150).Value = CmbExecutive.Text.ToString()
1
Feroj Ahmed