Лучший подход - хранить эти изображения в файловой системе и идентификаторы в базе данных. Из соображений производительности и обслуживания. Резервное копирование и восстановление было бы намного проще в файловой системе, и отправка СУБД для такой работы не лучшая идея, вам нужно будет перенести их из БД в приложение, а затем передать на клиент. Я просто считаю, что это не работа. Поставьте демон lighttpd или что-то еще для хостинга изображений и оставьте его делать свою работу.
Но если вам нравится идея, так как вы собираетесь использовать SQL Server 2008, вы можете использовать FILESTREAM для хранения ваших изображений в ваших таблицах. В конце концов, он создаст файлы в выбранном вами месте хранения и сохранит двоичные данные в файловой системе, обеспечивая при этом транзакционные функции и целостность данных, что является большим бонусом. Посмотрите на этот вариант. Как я помню, это хорошо работает, и фактическая база данных будет намного компактнее.
Про динамическое изменение размеров я говорю, избегайте этого. Хранение дешевле, чем процессорное время, просто создайте множество миниатюр и версий с водяными знаками во время загрузки и сохраните их один раз где-нибудь, а затем используйте при необходимости. Не выполняйте одни и те же операции снова и снова. Вы можете сделать это при первом запросе к измененной версии, таким образом будет проще добавлять новые версии или периодически очищать кэш для удаления неиспользуемых файлов. Вы также сможете создавать резервные копии только оригинальных версий.