3

varbinary(max)列を持つテーブルがあり、その列に長さゼロのバイナリバッファーを割り当てようとしていますが、テーブルで長さゼロの値を取得する代わりに、長さ8000バイトの値を取得しています。ゼロ:
8000ロングゼロバッファー
*表示されているクエリのdataSize列は、DATALENGHT(data)( "SELECT _index、dataSize = DATALENGHT(data)、data FROM ....")を使用して追加され、値のテーブルに実際のサイズを示しています。

8000バイト長の空のバッファはどこから来ますか?これはある種のデフォルトの動作ですか?

4

1 に答える 1

0

ソース列がバイナリ (8000) の場合、8000DATALENGTH(data)が返され (完全に埋め込まれます)、データには完全な 8000 バイトが含まれます。

しかし、あなたが使用しているので

SELECT _index, dataSize=DATALENGTH(data), data FROM

固定サイズの列はすべての行で同じデータ長を報告するため、バイナリ (8000) 列にすることはできません。BINARY(8000)過去のある時点で、変数または他の手段から一部のデータがそこにコピーされた可能性があります。

于 2011-02-16T15:01:50.457 に答える