VarBinary vs Image Тип данных SQL Server для хранения двоичных данных? - PullRequest
86 голосов
/ 14 января 2009

Мне нужно хранить двоичные файлы в базе данных SQL Server. Какой тип данных лучше из Varbinary и Image?

Ответы [ 4 ]

135 голосов
/ 14 января 2009

Поскольку изображение устарело, вы должны использовать varbinary.

за Microsoft (спасибо за ссылку @Christopher)

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

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

13 голосов
/ 14 января 2009

varbinary(max) - путь (введен в SQL Server 2005)

9 голосов
/ 14 января 2009

Существует также довольно элегантный FileStream, представленный в SQL Server 2008.

6 голосов
/ 10 апреля 2017

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 до 8000. max указывает, что максимальный объем памяти размер 2 ^ 31-1 байт. Размер хранилища - это фактическая длина введенные данные + 2 байта. Данные, которые вводятся, могут быть 0 байтов в длина. Синоним ANSI SQL для varbinary является двоичным, изменяющимся.

То есть оба имеют одинаковый размер (2 ГБ). Но помните:

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

Хотя конец типа данных «image» еще не определен, вы должны использовать «будущий» эквивалент.

Но вы должны спросить себя: зачем хранить BLOB-объекты в столбце? https://docs.microsoft.com/en-us/sql/relational-databases/blob/compare-options-for-storing-blobs-sql-server

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...