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