VarBinary vs Image SQL Server Data Type для хранения двоичных данных?

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
92
0
125 607
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

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

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

ntext , text, and image data types will be removed in a future version of Microsoft SQL Server. Avoid using these data types in new development work, and plan to modify applications that currently use them. Use nvarchar(max), varchar(max), and varbinary(max) instead.

Fixed and variable-length data types for storing large non-Unicode and Unicode character and binary data. Unicode data uses the UNICODE UCS-2 character set.

@ cmsjr: возможно, потому что, как говорит Microsoft: «тип данных изображения будет удален в будущей версии Microsoft SQL Server».

Ehsan 26.02.2013 18:04

@Ehsan Я могу только предположить, что вы не знакомы с термином "устаревший". В общем, когда вы говорите, что что-то устарело, вы говорите, что это не должно использоваться, потому что оно будет удалено в будущем. Так что мой пост и цитата, которую вы опубликовали в своем комментарии, означают, по сути, одно и то же.

cmsjr 26.02.2013 19:27

Не беспокойтесь, вы подняли хороший вопрос. Я обновлю формулировку.

cmsjr 26.02.2013 21:35

Я бы не назвал это ответом "только по ссылке". Я бы назвал это «кратким и правильным ответом на вопрос, который включает несколько полезных ссылок для тех, кто склонен узнать больше».

cmsjr 04.05.2013 06:58

Я буду откровенен и дам вам знать, что я не был склонен вносить изменения, потому что вы подошли к нему в оскорбительном и угрожающем тоне. Возможно, вы не хотели показаться грубым, но мне показалось, что вы поступали так со мной. Грубость часто может привести к тому, что люди отвергнут хорошие в остальном идеи. Я улучшил содержание, как вы предлагали, но я также прошу вас подумать о том, как вы представляете свои предложения.

cmsjr 08.05.2013 20:55

Интересно, почему Microsoft не документирует влияние ALTER TABLE, я бы предположил, что это всего лишь изменение метаданных? Есть ли у кого-нибудь опыт с этим? (Позже протестирую и сообщу)

eckes 05.03.2017 23:35

@eckes Это не изменение метаданных, оно создает невероятно большие файлы журнала. Думаю, воссоздание таблицы с минимальным ведением журнала будет быстрее.

eckes 06.03.2017 18:46

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

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

шикарно: умный на вид?

Liam 15.07.2014 14:33

«довольно элегантный» имеет несколько более общее значение (чем просто «элегантный») в просторечии ... Я думаю, наиболее уместно.

Grantly 09.02.2015 20:53

Этот вопрос касается форматов столбцов, а FileStream - это просто поведение хранилища. Файловый поток реализуется с помощью varbinary(max) и внесения изменений в ваш экземпляр сервера sql.

crthompson 12.03.2015 22:26

https://docs.microsoft.com/en-us/sql/t-sql/data-types/ntext-text-and-image-transact-sql

image

Variable-length binary data from 0 through 2^31-1 (2,147,483,647) bytes. Still it IS supported to use image datatype, but be aware of:

https://docs.microsoft.com/en-us/sql/t-sql/data-types/binary-and-varbinary-transact-sql

varbinary [ ( n | max) ]

Variable-length binary data. n can be a value from 1 through 8,000. max indicates that the maximum storage size is 2^31-1 bytes. The storage size is the actual length of the data entered + 2 bytes. The data that is entered can be 0 bytes in length. The ANSI SQL synonym for varbinary is binary varying.

Таким образом, оба имеют одинаковый размер (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- из-sql-сервера

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

Но вы должны спросить себя: зачем хранить большие двоичные объекты в столбце?

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

Другие вопросы по теме