OPENROWSET,二进制文件,varchars和varbinaries

我想上传一个二进制文件到SQL Server ,到一个varbinary字段。 我想出了这个查询来做到这一点:

INSERT INTO Files(File, Name) SELECT "file.bin" AS Name * FROM OPENROWSET(BULK 'C:\file.bin', SINGLE_BLOB) AS File GO 

但我得到这个错误:

从数据typesvarchar到varbinary(max)的隐式转换是不允许的。 使用CONVERT函数来运行此查询。

如果我理解正确,它是读取作为文本(varchar)的文件,而它是二进制的,应该存储为二进制varbinary。 恐怕在这个过程中可能会毁掉它,是吗? 即使没有,我如何使用CONVERT方法?

将数据按照与其工作的字段相同的顺序放置(或至less似乎工作):

 INSERT INTO Files(File, Name) SELECT * FROM OPENROWSET(BULK 'C:\file.bin', SINGLE_BLOB) AS File "file.bin" AS Name GO 

我自己从来没有这样做过,但是我发现这个页面显示了将一个jpg插入varbinaries的相同过程…唯一的区别是path名之前的N和AS开关

希望有所帮助,但即时通讯可能错过了转换的东西

我不知道为什么这是返回一个varchar列。 看起来和msdn中的例子一样。

我不知道你甚至会转换那一栏。 也许…

 SELECT convert(varbinary(max), * FROM OPENROWSET(BULK 'C:\file.bin', SINGLE_BLOB)) AS File 

但是,当你指定SINGLE_BLOB时,我会更关心它是一个varchar。