Varbinary(max) значение по умолчанию для изображения

У меня есть веб-приложение, в котором есть пользователь для вставки изображений. Я нахожу способ установить значение по умолчанию varbinary(MAX) значение в базе данных (SQL Server 2008), Может быть, что-то вроде Facebook, у которого есть изображение профиля по умолчанию, когда вы регистрируетесь. Я могу загружать изображения в базу данных и отображать их. Я могу сгенерировать эти изображения в PDF-файл (if the image column is NOT NULL) иначе я получаю сообщение об ошибке декодирования моего изображения, поэтому мне нужно значение по умолчанию varbinary(MAX) изображение, чтобы представить, что столбец изображения не вставлен. Пожалуйста, помогите мне действительно нуждающимся в этом для моего проекта.

2 ответа

Если вы ищете для хранения файлов / изображений, я бы рекомендовал посмотреть на FILESTREAM Overview

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

FILESTREAM интегрирует ядро ​​СУБД SQL Server с файловой системой NTFS, сохраняя данные varbinary(max) для больших двоичных объектов (BLOB) в виде файлов в файловой системе. Операторы Transact-SQL могут вставлять, обновлять, запрашивать, искать и резервировать данные FILESTREAM. Интерфейсы файловой системы Win32 обеспечивают потоковый доступ к данным.

FILESTREAM использует системный кеш NT для кэширования данных файла. Это помогает уменьшить любой эффект, который данные FILESTREAM могут оказать на производительность компонента Database Engine. Буферный пул SQL Server не используется; поэтому эта память доступна для обработки запросов.

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

/*get blob from file, store in variable*/
declare @blob as varbinary(max)
set @blob = (
    Select BulkColumn from Openrowset
    ( Bulk 'c:\temp\MyImage.jpg', Single_Blob) as tt)

/* insert blob into row */
insert into dbo.MyImageTable (Name, Blob) 
values('SomeName',@blob)    

Используя это, вы можете сохранить одно изображение по умолчанию в таблице, а затем просто связать его со строками, которым нужно изображение по умолчанию, с помощью простого соединения, например:

 select * from MyData join MyImageTable on MyImageTable.Name='SomeName'
Другие вопросы по тегам