SQL Server 2008 R2 で varbinary(max) を使用して挿入できるファイルの最大サイズはどれくらいですか? 列の最大値を 8,000 バイト以上に変更しようとしましたが、変更できないため、最大は 8,000 バイトであると推測していますが、MSDNのこの記事から、最大ストレージ サイズは 2 であると表示されています^31-1 バイト:
varbinary [ ( n |最大) ]
可変長バイナリ データ。n は 1 ~ 8,000 の値です。maxは、最大ストレージ サイズが 2^31-1 バイトであることを示します。格納サイズは、入力されたデータの実際の長さ + 2 バイトです。入力するデータの長さは 0 バイトです。varbinaryの ANSI SQL シノニムは、バイナリ可変です。
では、どうすればより大きなファイルを varbinary フィールドに保存できますか? 保存したいファイルは 200kb から最大 1mb までなので、FILESTREAM の使用は考えていません。使用しているコードは次のとおりです。
UPDATE [table]
SET file = ( SELECT * FROM OPENROWSET ( BULK 'C:\A directory\A file.ext', SINGLE BLOB) alias)
WHERE idRow = 1
8000 バイト以下のファイルに対して、そのコードを正常に実行できました。8001 バイトのサイズのファイルで試してみると、失敗します。テーブルのファイル フィールドには、「ファイル」タイプと呼ばれるフィールドがあり、前述のとおりvarbinary(8000)
、より大きな値に変更することはできません。