Sql server Microsoft SQL Server和varbinary数据类型转换
我不熟悉Microsoft SQL Server和Sql server Microsoft SQL Server和varbinary数据类型转换,sql-server,image,tsql,varbinary,varbinarymax,Sql Server,Image,Tsql,Varbinary,Varbinarymax,我不熟悉Microsoft SQL Server和varbinary(max)数据类型,但我需要使用的数据库存储图像 我的问题是,我需要做什么才能读回数据并将其转换回可读的图像类型 到目前为止,我所做的是 SELECT CONVERT(VARCHAR(max), [IMAGE], 2) FROM [demo].[dbo].[DOCIMAGES] WHERE [TITLE] = 'test.jpg' 但我得到的几乎是相同的,只是从数据的开头删除了0x,当 SELECT CONVERT(V
varbinary(max)
数据类型,但我需要使用的数据库存储图像
我的问题是,我需要做什么才能读回数据并将其转换回可读的图像类型
到目前为止,我所做的是
SELECT CONVERT(VARCHAR(max), [IMAGE], 2)
FROM [demo].[dbo].[DOCIMAGES]
WHERE [TITLE] = 'test.jpg'
但我得到的几乎是相同的,只是从数据的开头删除了0x
,当
SELECT CONVERT(VARCHAR(max), [IMAGE], 0)
FROM [demo].[dbo].[DOCIMAGES]
WHERE [TITLE] = 'test.jpg'
返回值为Lead
然后我尝试执行存储过程,将其保存到如下文件:
DECLARE @ImageData VARBINARY (max);
DECLARE @Path2OutFile NVARCHAR (2000);
DECLARE @Obj INT
SET NOCOUNT ON
SELECT @ImageData = (
SELECT CONVERT(VARBINARY(max), [IMAGE], 1)
FROM [demo].[dbo].[DOCIMAGES]
WHERE [TITLE] = 'test.jpg'
);
SET @Path2OutFile = CONCAT (
'C:\Users\MyPC\Downloads'
,'\'
,'test.jpg'
);
BEGIN TRY
EXEC sp_OACreate 'ADODB.Stream' ,@Obj OUTPUT;
EXEC sp_OASetProperty @Obj ,'Type',1;
EXEC sp_OAMethod @Obj,'Open';
EXEC sp_OAMethod @Obj,'Write', NULL, @ImageData;
EXEC sp_OAMethod @Obj,'SaveToFile', NULL, @Path2OutFile, 2;
EXEC sp_OAMethod @Obj,'Close';
EXEC sp_OADestroy @Obj;
END TRY
BEGIN CATCH
EXEC sp_OADestroy @Obj;
END CATCH
SET NOCOUNT OFF
但这失败了,出现了一个错误:
SQL Server阻止访问组件的过程“sys.sp\u OADestroy”
“Ole自动化过程”,因为此组件已作为
此服务器的安全配置的一部分。制度
管理员可以通过以下方式启用“Ole自动化过程”的使用:
使用sp_配置
问题是我不是那个服务器的管理员
在这种情况下,我可以将[图像]的内容转储到一个文件中,然后使用Java或PHP流式传输该内容并将其保存为图像文件吗?您将在哪里显示图像/使用图像数据?它们会显示在网页或客户端UI或类似的东西中吗?如果是这样的话,您应该能够从数据库中以位的形式读取数据,并将其用于客户端所需的任何对象。如果您有一个web api方法或类似的方法来返回JPG结果,您应该能够返回MIME类型为image/JPG的原始数据,这很好。@squillman它将被web api使用,我的想法是将其输出为JSON对象,该对象将包含MIME类型以及该
image
列的二进制部分,但当我尝试将其与适当的标题一起使用,以显示图像/jpg未按预期工作。您可能会更好,然后发布您拥有的api代码,因为这才是真正的问题所在。你能更新一下吗?@squillman我正在尝试使用PHPhex2bin($data)
其中$data
是我问题中第一个提到的查询的结果。