Тип даних VarBinary проти Image SQL Server для зберігання двійкових даних?


90

Мені потрібно зберігати двійкові файли в базі даних SQL Server. Який найкращий тип даних із Varbinary та Image?

Відповіді:


141

Оскільки зображення застаріле, слід використовувати varbinary.

на Microsoft (дякую за посилання @Christopher)

Типи даних ntext, text та image будуть видалені в майбутній версії Microsoft SQL Server. Уникайте використання цих типів даних у новій розробці та плануйте модифікувати програми, які їх зараз використовують. Замість цього використовуйте nvarchar (max), varchar (max) та varbinary (max).

Типи даних із фіксованою та змінною довжиною для зберігання великих символів та двійкових даних, що не належать до Юнікоду та Юнікоду. Дані Unicode використовують набір символів UNICODE UCS-2.


1
@ cmsjr: можливо тому, що, як каже Microsoft: "тип даних зображення буде видалений у майбутній версії Microsoft SQL Server".
Ehsan

4
@Ehsan Я можу лише припустити, що ти не знайомий із терміном, який є застарілим. Загалом, коли ви говорите, що щось застаріло, ви говорите, що його не слід використовувати, оскільки воно буде видалено в майбутньому. Тож мій допис та цитата, яку ви опублікували у своєму коментарі, означають по суті одне і те ж.
cmsjr

Не хвилюйтеся, ви піднімаєте хороший момент. Я оновлю фразу.
cmsjr

Я б не назвав це відповіддю "лише за посиланням". Я б назвав це "стислою та правильною відповіддю на запитання, яке містить кілька корисних посилань для тих, хто схильний дізнатися більше".
cmsjr

2
Я буду відвертим і повідомлю вас, що я відмовився від редагування, оскільки ви підійшли до нього з образливим та загрозливим тоном. Можливо, ти не мав наміру бути грубим, але, здавалося, ти поводився так зі мною. Хамство часто може змусити людей відкидати хороші ідеї. Я покращив вміст, як ви запропонували, але я б також попросив вас подумати над тим, як ви подаєте свої пропозиції.
cmsjr


9

Існує також досить пишна FileStream, представлена ​​в SQL Server 2008.


spiffy: розумний на вигляд ?
Ліам

"скоріше пишний" має дещо загальніше значення (ніж просто "пихливий") у загальнонаціональній мові ... Я думаю, найбільш влучний.
Незворушно

Це питання стосується форматів стовпців і 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 до 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-сервера

Хоча кінець типу даних "зображення" все ще не визначений, слід використовувати еквівалент доказів "майбутнього".

Але ви повинні запитати себе: навіщо зберігати BLOBS в колонці?

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.