问题描述
我有一个图像URL链接,我需要将其存储在SQL Server数据库中。我需要在SQL Server或SSIS中写一些东西才能从URL中获取该图像。
此处显示的代码的问题是响应文本为nvarchar(max)
,应为VarBinary(MAX)
。
这只是从数据库调用http请求的一种主意。我认为解决方案将是在SSIS的脚本组件中完成,是正确的还是有人有更好的主意?
DECLARE @status int
DECLARE @responseText AS TABLE (responseText nvarchar(max))
DECLARE @res AS Int;
DECLARE @url AS nvarchar(1000) = 'https://agriapp.azurewebsites.net/barcode/qr?id=LL-12345'
EXEC sp_OACreate 'MSXML2.ServerXMLHTTP',@res OUT
EXEC sp_OAMethod @res,'open',NULL,'GET',@url,'false'
EXEC sp_OAMethod @res,'send'
EXEC sp_OAGetProperty @res,'status',@status OUT
INSERT INTO @ResponseText (ResponseText)
EXEC sp_OAGetProperty @res,'responseText'
EXEC sp_OADestroy @res
SELECT
@status,CONVERT(VARBINARY(MAX),responseText) responseText
FROM @responseText
解决方法
我相信您在responseText中得到的是base64编码的,您需要对其进行解码,或者将其从base64转换为varbinary。查看此博客文章:
T-SQL:轻松进行Base64编码和解码
https://medium.com/falafel-software/t-sql-easy-base64-encoding-and-decoding-872ad184bd7e