2 ответов:
Если вы имеете в виду использование литерала, вам просто нужно создать двоичную строку:
insert into Files (FileId, FileData) values (1, 0x010203040506)и вы будете иметь запись с шести байт значение поля данным.
вы указываете в комментариях, что хотите просто указать имя файла, которое вы не можете сделать с SQL Server 2000 (или любой другой версией, о которой я знаю).
для этого вам понадобится хранимая процедура CLR в SQL Server 2005/2008 или расширенная хранимая процедура (но я бы избегайте этого любой ценой, Если вам не нужно), Который берет имя файла, а затем вставляет данные (или возвращает байтовую строку, но это может быть довольно длинным).
что касается вопроса о возможности получения данных только из SP/query, я бы сказал, что ответ да, потому что если вы даете SQL Server возможность читать файлы из файловой системы, что вы делаете, когда вы не подключены через проверку подлинности Windows, какой пользователь используется для определения прав? Если вы запускаете службу как администратор (не дай Бог), тогда у вас может быть повышение прав, которое не должно быть разрешено.
Я считаю, что это будет где-то рядом.
INSERT INTO Files (FileId, FileData) SELECT 1, * FROM OPENROWSET(BULK N'C:\Image.jpg', SINGLE_BLOB) rsчто-то отметить, выше работает в SQL Server 2005 и SQL Server 2008 с типом данных как
varbinary(max). Он не был протестирован с изображением в качестве типа данных.
Comments