如何使用简单的插入语句将二进制文件数据插入二进制SQL字段?
我有一个包含image
列的表的SQL Server 2000。
如何通过指定文件的path将文件的二进制数据插入到该列中?
CREATE TABLE Files ( FileId int, FileData image )
如果你的意思是使用文字,你只需要创build一个二进制string:
insert into Files (FileId, FileData) values (1, 0x010203040506)
你将有一个六字节值的FileData字段的logging。
您在注释中指出,您只需指定文件名,而不能使用SQL Server 2000(或者我知道的任何其他版本)。
你需要一个CLR存储过程来在SQL Server 2005/2008或扩展存储过程中执行此操作(但是,如果没有必要,我将不惜一切代价避免这种操作),然后插入数据(或返回字节string,但可能会相当长)。
关于只能从SP /查询中获取数据的问题,我想说的答案是肯定的,因为如果您让SQL Server能够从文件系统中读取文件,那么当您不使用文件系统时,通过Windows身份validation连接,用户是用来确定权限? 如果您以pipe理员身份运行该服务(上帝保佑),那么您可以提升不应该允许的权利。
我相信这将是一个接近的地方。
INSERT INTO Files (FileId, FileData) SELECT 1, * FROM OPENROWSET(BULK N'C:\Image.jpg', SINGLE_BLOB) rs
需要注意的是,上面的SQL Server 2005和SQL Server 2008中的数据types为varbinary(max)
。 它没有作为数据types与图像进行testing。