バイナリデータを格納するVarBinary vs Image SQL Serverデータ型?


90

SQL Serverデータベースにバイナリファイルを保存する必要があります。VarbinaryとImageのうち、どちらがより良いデータタイプですか?

回答:


141

イメージは非推奨であるため、varbinaryを使用する必要があります。

マイクロソフト ごと(リンク@Christopherに感謝)

ntext、text、およびimageデータ型は、Microsoft SQL Serverの将来のバージョンで削除される予定です。新しい開発作業でこれらのデータ型を使用することは避け、現在それらを使用しているアプリケーションの変更を計画してください。代わりにnvarchar(max)、varchar(max)、およびvarbinary(max)を使用してください。

大容量の非UnicodeおよびUnicode文字とバイナリデータを格納するための固定長と可変長のデータ型。UnicodeデータはUNICODE UCS-2文字セットを使用します。


1
@ cmsjr:おそらくMicrosoftが言うように:「画像データ型は、Microsoft SQL Serverの将来のバージョンで削除される予定です。」
イーサン2013

4
@Ehsan非推奨という用語に精通していないと思います。一般的に、何かが非推奨であると言うとき、それは将来削除されるため、使用すべきではないと言っています。したがって、私の投稿とコメントで投稿した引用は、本質的に同じことを意味します。
cmsjr 2013

心配しないで、あなたは良い点を育てます。フレージングを更新します。
cmsjr 2013

これを「リンクのみ」の答えとは言いません。私はこれを「もっと詳しく知りたい人のための役立つリンクを含む質問への簡潔で正しい答え」と呼びます。
cmsjr 2013年

2
私は率直に言って、あなたが不快で脅迫的な口調でそれに近づいたので、私が編集をすることに消極的であったことをあなたに知らせます。失礼なことをするのはあなたの意図ではないかもしれませんが、私にはあなたがそうしているようでした。失礼はしばしば人々をそうでなければ良いアイデアを却下させる可能性があります。私はあなたの提案に従ってコンテンツを改善しましたが、提案をどのように提示するかについて少し考えていただくようお願いします。
cmsjr 2013年


9

またFileStream、SQL Server 2008で導入された、かなり洗練されたものもあります。


気の利いた:見た目はスマートですか?
リアム

「ややこわい」は、一般的な言い回しでは(「こわい」というよりも)やや一般的な意味を持っています...最も適切だと思います。
付与

この質問は列のフォーマットに関するものでFileStreamあり、単なる格納動作です。Filestreamはvarbinary(max)、SQLサーバーインスタンスを使用および変更することによって実装されます。
paqogomez

6

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)。ただし、次のことに注意してください。

https://docs.microsoft.com/en-us/sql/database-engine/deprecated-database-engine-features-in-sql-server-2016#features-not-supported-in-a-future-version- of-sql-server

「画像」データ型の終わりはまだ決定されていませんが、同等の「将来」の証明を使用する必要があります。

しかし、あなたは自問する必要があります:なぜ列にBLOBを格納するのですか?

https://docs.microsoft.com/en-us/sql/relational-databases/blob/compare-options-for-storing-blobs-sql-server

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.