sco*_*ttm 60 t-sql sql-server sql-server-2000
我有一个SQL Server 2000,其中包含一个包含image
列的表.
如何通过指定文件的路径将文件的二进制数据插入该列?
CREATE TABLE Files
(
FileId int,
FileData image
)
Run Code Online (Sandbox Code Playgroud)
小智 98
我相信这会很接近.
INSERT INTO Files
(FileId, FileData)
SELECT 1, * FROM OPENROWSET(BULK N'C:\Image.jpg', SINGLE_BLOB) rs
Run Code Online (Sandbox Code Playgroud)
需要注意的是,上面的内容在SQL Server 2005和SQL Server 2008中运行,数据类型为varbinary(max)
.没有使用图像作为数据类型进行测试.
cas*_*One 54
如果您的意思是使用文字,则只需创建二进制字符串:
insert into Files (FileId, FileData) values (1, 0x010203040506)
Run Code Online (Sandbox Code Playgroud)
并且您将拥有FileData字段的六字节值记录.
您在注释中指出您只想指定文件名,而不能使用SQL Server 2000(或我所知道的任何其他版本).
你需要一个CLR存储过程来在SQL Server 2005/2008或扩展存储过程中执行此操作(但我会不惜一切代价避免这种情况,除非必须),它接受文件名然后插入数据(或返回字节)字符串,但可能很长).
关于只能从SP /查询中获取数据的问题,我会说答案是肯定的,因为如果你让SQL Server能够从文件系统中读取文件,那么当你没有时,你会怎么做?通过Windows身份验证连接,用户用什么来确定权限?如果您以管理员身份运行该服务(上帝禁止),那么您可以拥有不应允许的权限提升.