Azure 无法大容量加载,因为无法打开文件“file.csv”。操作系统错误代码5(访问被拒绝。)

Azure 无法大容量加载,因为无法打开文件“file.csv”。操作系统错误代码5(访问被拒绝。),azure,azure-sql-database,blob,Azure,Azure Sql Database,Blob,我在尝试从Azure Sql数据库访问Azure Blob存储并上载单个Blob/映像时遇到以下问题。获取上述信息。我已经配置了SAS。以下是我的发现: 如果容器是公共的,则下面的sql在没有凭据的情况下工作 当它是私有的时,可以通过blob url访问blob 从浏览器中使用sas令牌 如果我尝试通过Azure Sql数据库访问它,我会使用相同的令牌 获取与上述相同的错误: 无法执行查询。错误:无法大容量加载,因为无法打开文件POC.png。操作系统错误代码5访问被拒绝 我所做的是: 删除所有

我在尝试从Azure Sql数据库访问Azure Blob存储并上载单个Blob/映像时遇到以下问题。获取上述信息。我已经配置了SAS。以下是我的发现:

如果容器是公共的,则下面的sql在没有凭据的情况下工作 当它是私有的时,可以通过blob url访问blob 从浏览器中使用sas令牌 如果我尝试通过Azure Sql数据库访问它,我会使用相同的令牌 获取与上述相同的错误: 无法执行查询。错误:无法大容量加载,因为无法打开文件POC.png。操作系统错误代码5访问被拒绝

我所做的是:

删除所有不需要的权限,只留下只读和列表; 确保在几天内生成的开始/结束日期时间 在过去/足够远的将来; 确保{container}{blobname}是相同的lower/capital 容器中的字母; 位置末尾没有反斜杠
它成功了。任何可能导致上述错误消息的要点。

Azure Sql数据库很可能没有访问POC.png所在路径所需的权限。另一方面,正如我上面所写的,如果我将Azure Blob访问级别设置为Public,则,完全相同的SQL只有删除的凭据才能正常工作。另一个发现是:如果我只为特定blob创建并使用SAS,那么一切都可以正常工作。问题是,当我在更高的存储帐户级别上创建SAS时,您是否生成了具有列表和读取权限的SAS?在SAS字符串中,您应该看到&sp=rl。还请记住,名称是区分大小写的转换!请接受它作为答案。这可能对其他社区成员有益。非常感谢。
CREATE DATABASE SCOPED CREDENTIAL MyAzureBlobStorageCredential
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'sv=2018-03-28....'
go
CREATE EXTERNAL DATA SOURCE MyAzureBlobStorage 
WITH ( TYPE = BLOB_STORAGE, 
LOCATION = 'https://poc.blob.core.windows.net/poc-container',
CREDENTIAL = MyAzureBlobStorageCredential); 
go    
INSERT INTO file111 (col2)
SELECT BulkColumn FROM OPENROWSET(
 BULK  'POC.png',
DATA_SOURCE = 'MyAzureBlobStorage',
 SINGLE_BLOB
) AS DataFile;