SQL Serverデータベースにバイナリファイルを保存する必要があります。VarbinaryとImageのうち、どちらがより良いデータタイプですか?
回答:
イメージは非推奨であるため、varbinaryを使用する必要があります。
マイクロソフト ごと(リンク@Christopherに感謝)
ntext、text、およびimageデータ型は、Microsoft SQL Serverの将来のバージョンで削除される予定です。新しい開発作業でこれらのデータ型を使用することは避け、現在それらを使用しているアプリケーションの変更を計画してください。代わりにnvarchar(max)、varchar(max)、およびvarbinary(max)を使用してください。
大容量の非UnicodeおよびUnicode文字とバイナリデータを格納するための固定長と可変長のデータ型。UnicodeデータはUNICODE UCS-2文字セットを使用します。
またFileStream、SQL Server 2008で導入された、かなり洗練されたものもあります。
FileStreamあり、単なる格納動作です。Filestreamはvarbinary(max)、SQLサーバーインスタンスを使用および変更することによって実装されます。
https://docs.microsoft.com/en-us/sql/t-sql/data-types/ntext-text-and-image-transact-sql
画像
0から2 ^ 31-1(2,147,483,647)バイトの可変長バイナリデータ。それでも画像データ型の使用はサポートされていますが、次のことに注意してください。
https://docs.microsoft.com/en-us/sql/t-sql/data-types/binary-and-varbinary-transact-sql
varbinary [(n | max)]
可変長バイナリデータ。nには、1〜8,000の値を指定できます。maxは、最大ストレージサイズが2 ^ 31-1バイトであることを示します。ストレージサイズは、入力されたデータの実際の長さ+ 2バイトです。入力するデータの長さは0バイトにすることができます。varbinaryのANSI SQLシノニムは、バイナリによって異なります。
したがって、両方のサイズは等しくなります(2GB)。ただし、次のことに注意してください。
「画像」データ型の終わりはまだ決定されていませんが、同等の「将来」の証明を使用する必要があります。
しかし、あなたは自問する必要があります:なぜ列にBLOBを格納するのですか?