如何将映像添加到Azure SQL数据库?

ffx8fchx  于 2023-05-01  发布在  其他
关注(0)|答案(1)|浏览(130)

我最近一直在重写我的数据库,希望它能够接受图像。然而,在Azure的情况下,这要棘手得多,因为直接从PC添加图像是不可能的,并且最终会出现以下错误:

INSERT INTO [Lesson_Content] (Lesson_Language, Lesson_Text, Id_Lesson, Lesson_Image) SELECT 'Polish','sample text', 4, BulkColumn
FROM OPENROWSET
(
    Bulk 'C:\Users\ogryz\Desktop\swedish.png', SINGLE_BLOB
)AS Lesson_Image

无法大容量加载,因为文件“C:\Users\ogryz\Desktop\swedish.png”无法打开。操作系统错误代码997(重叠I/O操作正在进行。).
所以我不得不求助于存储blob,但是我不知道如何通过SQL而不是通过网站向它们添加图像。
所以我有两个问题
1.如何通过SQL将图像添加到Blob存储中?
1.是否有更好的方法来添加映像到Azure SQL数据库,而不是使用前面提到的blob?

svdrlsy4

svdrlsy41#

如何将映像添加到Azure SQL数据库?
不支持将文件从本地计算机加载到Azure SQL数据库。

同意CSharpRocks,图像应该保存到blob存储,数据库也应该包含该图像的blob URL,或者您可以将图像存储在blob存储中,然后在SQL数据库中读取它。
为了实现这一点,

  • 首先将图像上传到blob存储中。

  • 然后为该blob存储创建外部DataSource,并将图像从blob存储插入到Azure SQL。
    示例编码:

--create a master key

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'YourStrongPassword';
GO

--create a scoped credential

CREATE DATABASE SCOPED CREDENTIAL sampleblobcred1
 WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
 SECRET = 'SAS Token';

--create a external data source

CREATE EXTERNAL DATA SOURCE samplestorageblob
WITH ( TYPE = BLOB_STORAGE,
          LOCATION = 'https://StorageAccountName.blob.core.windows.net'
          , CREDENTIAL= sampleblobcred1
);

--Insert image from blob storage

INSERT INTO DatabaseImageTable (col1, col2)VALUES (1, (Select BulkColumn FROM OPENROWSET( 
BULK 'image.jpg',
DATA_SOURCE = 'samplestorageblob', SINGLE_BLOB) AS ImageFile));

相关问题