Максимальное реальное пространство в 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. Увеличение размера авторазличия для базы данных решило проблему. Потратил меня на то, чтобы разобраться, так что просто подумал, что буду делиться:)