Мне нужно экспортировать некоторые изображения в мой SQL Server по URL-адресу HTTP.Чтение двоичных данных в TSQL через HTTP 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 Agent, если хотите. TSQL обычно не является хорошим языком для работы с чем-либо за пределами базы данных, хотя загрузка двоичных файлов возможна и задана много раз, например. [этот вопрос] (http://stackoverflow.com/questions/3925656/importing-images-in-sql-server-2005). – Pondlife
Да, я видел эти вопросы, но openrowset не работает с http. –
Правильно, и главным моментом моего комментария было то, что вы не должны делать это в TSQL в любом случае, вы должны сделать это во внешней программе. Не все может или должно быть сделано внутри базы данных: TSQL может загружать двоичные файлы из файловой системы, но не поддерживает HTTP или другие протоколы. Если вы абсолютно должны сделать это в базе данных, тогда вы можете написать процедуру SQLCLR, но я бы не рекомендовал ее. – Pondlife