Максимальное реальное пространство в varbinary (max) в SQL Server

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

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

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

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

Ответ 1

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

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

Ответ 2

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

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

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

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

Ответ 3

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

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

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

Ответ 4

У меня возникла ошибка "String или двоичные данные были усечены" при попытке сохранить 5MB с использованием varbinary (max) на SQL Server 2005. Увеличение размера авторазличия для базы данных решило проблему. Потратил меня на то, чтобы разобраться, так что просто подумал, что буду делиться:)