Есть ли большая техническая разница между типами данных VARBINARY (MAX) и IMAGE? - PullRequest
16 голосов
/ 06 ноября 2010

Я читал в Интернете эти утверждения о SQL Server типах данных:

  1. VARBINARY(MAX) - двоичные строки с переменной длиной могут хранить до 2 ^31-1 байт.

  2. IMAGE - двоичные строки переменной длины до 2 ^ 31-1 (2 147 483 647) байт.

Есть ли действительно большая техническая разница между типами данных VARBINARY(MAX) и IMAGE?

Если есть разница: нужно ли настраивать, как ADO.NET вставляет и обновляет поле данных изображения в SQL Server?

Ответы [ 4 ]

19 голосов
/ 06 ноября 2010

Они хранят одни и те же данные: это далеко.

"image" устарел и имеет ограниченный набор функций и операций, которые с ним работают. varbinary(max) может работать как короче varbinary (то же самое для text и varchar(max)).

Не используйте image для любого нового проекта: просто найдите здесь вопросы, которые есть у людей с типами данных image и text из-за ограниченной функциональности.

Примеры из SO: Один , Два

7 голосов
/ 06 ноября 2010

Я думаю, что технически они похожи, но важно отметить следующее из документации :

ntext, text и image типы данных будут удалены вбудущая версия MicrosoftSQL Server.Избегайте использования этих типов данных в новых разработках и планируйте модифицировать приложения, которые их используют в настоящее время.Вместо этого используйте nvarchar (max), varchar (max) и varbinary (max).

Типы данных фиксированной и переменной длины для хранения больших символов, отличных от Unicode и Unicode, и> двоичных данных.Данные Unicode используют набор символов UNICODE UCS-2.

4 голосов
/ 28 февраля 2012

Они хранят одни и те же данные: это так далеко.

«изображение» устарело и имеет ограниченный набор функций и операций что работа с этим. varbinary (max) может работать как короче varbinary (то же самое для текста и varchar (max)).

Не используйте изображение для любого нового проекта: просто найдите здесь вопросы люди имеют с изображениями и текстовыми типами данных из-за ограниченного функциональность.

Фактически, VARBINARY может хранить любые данные, которые могут быть преобразованы в байтовый массив, например, файлы, и это тот же процесс, который используется типом данных IMAGE, поэтому с этой точки зрения обе данные типы могут хранить одни и те же данные. Но у VARBINARY есть свойство размера, в то время как IMAGE принимает любой размер вплоть до пределов типа данных, поэтому при использовании типа данных IMAGE вы потратите больше ресурсов на хранение тех же данных. В Microsoft® SQL Server® тип данных IMAGE действительно устарел, поэтому вы должны сделать ставку на VARBINARY тип данных.

Но будьте осторожны: Microsoft® SQL Server® CE® (включая последнюю версию 4.0) все еще использует тип данных IMAGE, и, вероятно, этот тип данных не "исчезнет" так скоро, потому что в Версии Compact Edition, этот тип данных лучше, чем любой другой, для быстрого хранения файлов.

0 голосов
/ 11 апреля 2013

Я случайно обнаружил одну разницу между ними. Вы можете вставить строку в тип изображения, но не в varbinary. Возможно, именно поэтому MS осуждает тип изображения, поскольку на самом деле не имеет смысла устанавливать изображение со строкой.

...