Ограничение вложений файлов в БД SQL Server 2005 до значения> 8000 байт - PullRequest
3 голосов
/ 28 октября 2008

У меня есть приложение .Net, которое позволит пользователям прикреплять файлы к базе данных SQL Server 2005. Я хочу ограничить размер файла до 10 МБ, поэтому, насколько я могу судить, я должен объявить тип данных varbinary (max), поскольку максимальный размер, который я могу указать, составляет 8000 байт. Но varbinary (max) с размером файла ~ 2 Гбайт кажется излишним. Есть ли способ ограничить его размером в 10 МБ в базе данных, или мне просто нужно убедиться, что они не пытаются прикрепить что-то большее к внешнему интерфейсу.

Ответы [ 7 ]

2 голосов
/ 28 октября 2008

Немного не по теме: Хотя это, конечно, возможно, я обнаружил, что обычно плохая идея хранить вложения непосредственно в базе данных.

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

Простое сохранение информации о пути к файлу в базе данных и сохранение фактического файла в общей сетевой папке является альтернативой, которую я рекомендую рассмотреть. (Конечно, это означает, что теперь вам нужно беспокоиться о правах доступа к сетевым файлам и некоторых других проблемах, но во многих случаях это все же лучшая альтернатива.)

2 голосов
/ 28 октября 2008

Использование varbinary (max) вполне нормально, поскольку это varbinary, вы будете использовать только столько места, сколько требует контент, до 2 гигабайт. Тем не менее, вы можете добавить CHECK CONSTRAINT в БД, проверяя длину данных () загрузки. Я бы предпочел просто проверить загрузку в приложении.

0 голосов
/ 28 октября 2008

Похоже, что было бы лучше ограничить размер вложений в интерфейсе и в базе данных. Кажется, решение Kaboing для проверки ограничений подходит для базы данных.

0 голосов
/ 28 октября 2008

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

Небольшая логика приложения перед началом работы может сэкономить время и улучшить взаимодействие с пользователем.

0 голосов
/ 28 октября 2008

Ах, моя вина. Это настольное приложение VB.Net. Я забыл упомянуть об этом. Но я полагаю, что предложение о том, чтобы справиться с этим на внешнем интерфейсе, все еще сохраняется.

Спасибо

0 голосов
/ 28 октября 2008

В ASP.NET у вас уже есть ограничение на размер загрузки (по умолчанию: 4MB IIRC). Вы можете использовать это для ограничения ваших загрузок.

IMO было бы лучше, потому что это быстрее на пути к БД, поэтому вы минимизируете перегрузку на сервере.

Единственным недостатком является то, что пользователь увидит страницу с ошибкой, если попытается загрузить файл, размер которого превышает ограничение ASP.NET.

0 голосов
/ 28 октября 2008

Я думаю, вам нужно сделать это во внешнем интерфейсе. Вы можете ограничить размер HTTP-запроса в файле web.config следующим образом:

</configuration>
   </system.web>
      <httpRuntime maxRequestLength="60000"/>
   </system.web>
</configuration>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...