Как загрузить изображения в базу данных SQL в Azure? - PullRequest
1 голос
/ 03 февраля 2020

Я видел несколько запросов на загрузку изображений из файла, но я получаю это сообщение об ошибке:

Невозможно выполнить массовую загрузку, поскольку файл не может быть открыт

Я пошел в свойства> свойства безопасности файла, чтобы дать доступ к SQL, но не смог найти разрешение, чтобы дать разрешение. Учитывая, что это Azure от Microsoft, как мне предоставить доступ к моим файлам, чтобы я мог выполнить запрос? Я использую OPENROWSET, и это мой код.

INSERT INTO FOTOS_EMPLEADOS
values (1,'HOLA', (SELECT * FROM OPENROWSET(BULK 'C:\Users.jpg', SINGLE_BLOB) as T1))

Если есть ошибка с кодом или другим способом сделать это, пожалуйста, сообщите мне.

TIA

1 Ответ

0 голосов
/ 04 февраля 2020

Azure SQL База данных не поддерживает загрузку файла с локального компьютера.

Пожалуйста, укажите OPENROWSET (Transact- SQL) : enter image description here

Если вы хотите сделать это, вам необходимо загрузить изображения в хранилище BLOB-объектов:

См. Импорт в таблицу из файла, хранящегося в Azure Blob хранилище :

--> Optional - a MASTER KEY is not required if a DATABASE SCOPED CREDENTIAL is not required because the blob is configured for public (anonymous) access!
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'YourStrongPassword1';
GO
--> Optional - a DATABASE SCOPED CREDENTIAL is not required because the blob is configured for public (anonymous) access!
CREATE DATABASE SCOPED CREDENTIAL MyAzureBlobStorageCredential
 WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
 SECRET = '******srt=sco&sp=rwac&se=2017-02-01T00:55:34Z&st=2016-12-29T16:55:34Z***************';

 -- NOTE: Make sure that you don't have a leading ? in SAS token, and
 -- that you have at least read permission on the object that should be loaded srt=o&sp=r, and
 -- that expiration period is valid (all dates are in UTC time)

CREATE EXTERNAL DATA SOURCE MyAzureBlobStorage
WITH ( TYPE = BLOB_STORAGE,
          LOCATION = 'https://****************.blob.core.windows.net/curriculum'
          , CREDENTIAL= MyAzureBlobStorageCredential --> CREDENTIAL is not required if a blob is configured for public (anonymous) access!
);

INSERT INTO achievements with (TABLOCK) (id, description)
SELECT * FROM OPENROWSET(
   BULK  'csv/achievements.csv',
   DATA_SOURCE = 'MyAzureBlobStorage',
   FORMAT ='CSV',
   FORMATFILE='csv/achievements-c.xml',
   FORMATFILE_DATA_SOURCE = 'MyAzureBlobStorage'
    ) AS DataFile;

Надеюсь, это поможет.

...