Максимальное реальное пространство в varbinary (max) в SQL Server - PullRequest
12 голосов
/ 20 апреля 2011

Я сохраняю файлы (любого типа) в таблице SQL, используя varbinary(max). Я обнаружил, что максимальное использование этого типа данных составляет 8000, но что означает 8000?

Онлайндокументация говорит, что это 8000 байт.Означает ли это, что максимальный размер сохраняемого файла составляет 8000/1024 = 7,8125 КБ?

Я начинаю тестирование, и максимальный размер файла, который я могу сохранить, составляет 29,9 МБ.Если я выберу файл большего размера, получим SQLException.

Строка или двоичные данные будут обрезаны.Заявление было прекращено.

Ответы [ 4 ]

37 голосов
/ 20 апреля 2011

Внедрение SQL Server 2012 (кодовое имя Denali), когда оно выпущено - у него есть FileTable функция:)

  • varbinary(8000) ограничено 8000 байтов - это точно!
  • varbinary(max) ограничено 2 гигабайтами
  • varbinary(max) FILESTREAM ограничено вашей файловой системой (FAT32 - 2 Гб, NTFS - 16 экзабайт)
10 голосов
/ 20 апреля 2011

взято отсюда:

http://msdn.microsoft.com/en-us/library/ms188362.aspx:

max указывает, что максимальный размер хранилища составляет 2 ¹-1 байт

, что составляет 2 147 483 647 байт. Я не уверен, почему он останавливается на 29,9 МБ.

5 голосов
/ 13 июня 2012

Я получил сообщение об ошибке «Строка или двоичные данные будут обрезаны» при попытке сохранить 5 МБ с использованием varbinary (max) в SQL Server 2005. Увеличение размера автоматического роста для базы данных решило проблему. Мне понадобилось время, чтобы понять, так что я просто поделился :)

5 голосов
/ 20 апреля 2011

Какую версию SQL Server вы используете?

Varbinary на MSDN для SQL Server 2008 прямо говорит, что VarBinary (MAX) предназначен для использования, когда "записи данных столбца превышает 8000 байт. "

Кроме того, я бы также взглянул на Возможности файлового потока в SQL Server 2008 , если это сервер, который вы используете.

...