わかりました。これを行う方法は、サブストリング関数を使用することです。MS は、バイナリで機能すると正確に述べています。彼らが言っていないのは、部分文字列が 8,000 バイトしか返さないということです。
つまり、blob データ型が画像で、これを使用する場合:
select substring(BlobField,0,100000000) from TableWithHugeBlobField where ID = SomeIDValue --all you'll get is the first 8K bytes (use DataLength function to get the size)
プレ>ただし、varbinary(max) の変数を宣言し、blob フィールドのデータ型が varbinary(max) (または便利なサイズ) の場合は、部分文字列関数を使用して、部分バイナリを宣言した変数に戻します。これはうまくいきます。このように:
Declare @PartialImage varbinary(max) select @PartialImage = substring(BlobField, 0, 100000000) --1GB from TableWithHugeBlobField where ID = SomeIDValue select DataLength(@PartialImage) -- should = 1GB
プレ>なぜ SQL を使用してファイル データを保存するのでしょうか。それは有効な質問です。何百もの異なるクライアント デバイス (iPhone など) にデータをファイルとしてレプリケートする必要があると想像してください。クライアントごとにニーズが異なるため、各パッケージは他とは異なります。その場合、ファイル パッケージを BLOB としてデータベースに保存する方がはるかに簡単にプログラムできます。プログラムでフォルダを調べて、クライアントにストリーミングする適切なパッケージを見つけるよりも反対です。