从SQL随需应变终结点运行查询时,SSMS中出现错误



我正试图从存储在Azure Blob容器中的CSV文件中提取数据,当我试图查询该文件时,我收到错误

File 'https://<storageaccount>.blob.core.windows.net/<container>/Sales/2020-10-01/Iris.csv' cannot be opened because it does not exist or it is used by another process.

该文件确实存在,据我所知,其他任何人都没有使用它。

我正在使用SSMS和Azure Synapse的SQL随需应变端点。

我在SSMS中所做的是在连接到端点后运行以下命令:

  1. CREATE DATABASE [Demo2];
  2. CREATE EXTERNAL DATA SOURCE AzureBlob WITH ( LOCATION 'wasbs://<container>@<storageaccount>.blob.core.windows.net/' )
  3. SELECT * FROM OPENROWSET (
    BULK 'Sales/2020-10-01/Iris.csv',
    DATA_SOURCE = 'AzureBlob',
    FORMAT = '*'
    ) AS tv1;
    

我不确定我的问题在哪里,也不确定下一步该去哪里。我在创建外部数据源时有没有搞砸?我需要在那里使用SAS令牌吗?如果需要,语法是什么?

@Ubiquitinoob44,您需要创建一个数据库凭据:https://learn.microsoft.com/en-us/azure/synapse-analytics/sql/develop-storage-files-storage-access-control?tabs=shared-访问签名

我发现了问题所在。我还没有试过阿曼多的建议。

首先,我必须转到容器并编辑IAM策略,以使我的Active Directory登录名具有Blob数据贡献者角色。授予访问权限的用户将是您登录门户网站的电子邮件地址。

https://learn.microsoft.com/en-us/azure/storage/common/storage-auth-aad-rbac-portal?toc=/azure/synapse-analytics/toc.json&bc=/azure/synapse analytics/面包屑/toc.json

在那之后,我不得不重新连接到SSMS中的随需应变端点。请确保您通过Azure AD-MFA选项登录。最初,我使用的是随需应变端点用户名和密码,该用户名和密码没有被授予访问容器的Blob数据贡献者角色的权限。

https://learn.microsoft.com/en-us/azure/synapse-analytics/sql/resources-self-help-sql-on-demand

最新更新