1
我需要通过HTTP URL将一些图像导出到我的SQL Server中。通过HTTP读取TSQL中的二进制数据GET
我发现一篇关于XML数据的导出:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO
Declare @Object as Int;
Declare @ResponseText as Varchar(8000);
Declare @Url as Varchar(MAX);
select @Url = 'http://somexml.com/xmlfile.xml'
Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
Exec sp_OAMethod @Object, 'open', NULL, 'get', @Url, 'false'
Exec sp_OAMethod @Object, 'send'
Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT
Exec sp_OADestroy @Object
--load into Xml
Declare @XmlResponse as xml;
select @ResponseText
而且在研究中我发现,我应该使用ADODB.Stream二进制数据。但我不知道如何使用上述方法读取此对象。 有没有一种方法可以读取纯TSQL中的二进制数据,或者我应该使用CLR呢?
非常感谢您的帮助。
这将是更容易编写一个.NET程序下载文件,然后将它们加载到数据库中。如果需要,可以将其作为服务运行或使用SQL代理进行安排。尽管加载二进制文件是可能的并且已经被多次询问,但是TSQL通常不是处理数据库之外的任何事物的良好语言。 [这个问题](http://stackoverflow.com/questions/3925656/importing-images-in-sql-server-2005)。 – Pondlife 2013-02-15 20:06:46
是的,我看到了这些问题,但openrowset不适用于http。 – 2013-02-15 22:39:03
正确,我的评论的主要观点是你不应该在TSQL中这样做,你应该在外部程序中完成。并非所有事情都可以或应该在数据库内完成:TSQL可以从文件系统加载二进制文件,但它不支持HTTP或其他协议。如果您绝对必须在数据库中执行此操作,则可以编写SQLCLR过程,但我不会推荐它。 – Pondlife 2013-02-15 22:46:04