繁体   English   中英

无法创建从 Azure Blob 存储容器到 Azure Sql 数据库超大规模的外部数据源

[英]Can't create an external data source from Azure Blob Storage Container to Azure Sql Database Hyperscale

我已将单个文件 (BlockBlob) 上传到 Azure BlobStorage 中的容器

这是路径: https : //myStorageName.blob.core.windows.net/myContainerName/myFolder.Name/myFileName.json

我想将此文件加载到 Azure Sql 数据库中的表中

如果我为该文件创建一个 SAS,则一切正常。 但是,我无法生成可以访问容器内多个文件的单个 SAS。

这是有效的代码:

CREATE DATABASE SCOPED CREDENTIAL TemporaryBlobSCredential
 WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
 SECRET = 'sp=......................'

CREATE EXTERNAL DATA SOURCE TemporaryBlobDataSource
 WITH ( TYPE = BLOB_STORAGE,
       LOCATION = 'https://<myStorageName>.blob.core.windows.net/<myContainerName>',
       CREDENTIAL= TemporaryBlobSCredential);

create table <tableName>
(JsonData varchar(max))
 
BULK INSERT <tableName>
FROM '<myFolder.Name>/<myFileName>.json'
WITH (DATA_SOURCE = 'TemporaryBlobDataSource');
 

如果我生成一个具有所有权限的 SAS (SECRET = '?sv=......'),它将不起作用:

生成存储 SAS

我应该使用不同的东西吗? 它甚至有效吗?

我只是尝试运行您共享的代码,它与此处粘贴的代码非常相似。 如果在页面上向上滚动,“适用于”不会调用突触/SQL DW。 你确定你在使用 Synapse 吗? SQL 池中不支持 BULK INERT。

无论如何,如果您通常使用 Synapse,我们可以使用 COPY INTO 命令,但在您的情况下,我们有不支持的 JSON 格式。 我认为您可以使用 Azure 数据工厂

这份文件说:

警告

SAS 键值可能以“?”开头 (问号)。 使用 SAS 键时,必须删除前导的“?”。 否则你的努力可能会被阻止。

我注意到在您的工作代码中没有“?” 但是您的 SAS 令牌中存在不起作用。 你能仔细检查一下这个微小的差异是不是问题所在?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM