Microsoft SQL Server и преобразование типов данных varbinary - PullRequest
0 голосов
/ 07 сентября 2018

Я не знаком с Microsoft SQL Server и типом данных 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_OADestroy' компонента «Процедуры автоматизации Ole», потому что этот компонент отключен как часть конфигурации безопасности для этого сервера. Система администратор может разрешить использование «процедур автоматизации Ole» с помощью используя sp_configure.

Проблема в том, что я не являюсь администратором этого сервера.

В таком случае я могу вывести содержимое [ИЗОБРАЖЕНИЯ] в файл, а затем использовать Java или PHP для потоковой передачи этого содержимого и сохранить его в виде файла изображения?

...