首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Azure Synapse错误-文件不能打开,因为它不存在,或者它被其他进程使用。使用ACL授权访问

Azure Synapse错误-文件不能打开,因为它不存在,或者它被其他进程使用。使用ACL授权访问
EN

Stack Overflow用户
提问于 2022-09-13 12:37:48
回答 1查看 403关注 0票数 0

在这里输入图像描述需要你的帮助才能找到我到底错在哪里。

问题语句-在Azure Synapse中运行以下SQL:

代码语言:javascript
运行
复制
select top 10 * from 
OPENROWSET(
    BULK 'https://myxyzaccount.blob.core.windows.net/data/covid_12_31_2021.csv',
    format = 'csv',
    PARSER_VERSION = '2.0',
    FIRSTROW = 2) as rows

`

错误遇到-文件'2021.csv‘无法打开,因为它不存在或它是由另一个进程使用。

请注意-

  1. blob (csv文件)实际上存在于路径中。我没有在存储帐户中使用IAM分配角色的权限。因此,我无法指定“或Reader”角色(尽管我能够独自创建存储帐户)。
  2. 我查看了文档https://learn.microsoft.com/en-us/azure/synapse-analytics/sql/resources-self-help-sql-on-demand?tabs=x80070002#query-fails-because-file-cannot-be-opened。请参阅存储Blob数据贡献者角色的替代方案部分

我的理解是,即使无法通过存储帐户IAM授予授权,仍然可以让synapse使用适当的ACL访问所需的文件。

  1. 我的blob路径是myxyzaccount/data/covid_12_31_2021.csv,我在容器根目录(data)中添加了Azure Synapse的MSI,并授予'Execute‘权限。然后,我在文件(covid_12_31_2021.csv)级别提供了读和执行(以及写)权限。

然而,我得到了同样的错误,我粘贴在上面。作为参考,我在容器(根)和文件级别上附加ACL分配的屏幕截图。

你能帮帮我到底做错了什么吗?

谢谢!!

EN

回答 1

Stack Overflow用户

发布于 2022-09-13 13:42:22

在Synapse中,如果查询由于错误- File cannot be opened because it does not exist or it is used by another process而失败,但该文件实际上存在,则意味着无服务器的SQL池无法访问该文件。这个问题通常是因为Azure标识没有访问文件的权限而发生的。默认情况下,无服务器SQL池试图使用Azure Active标识访问该文件。要解决此问题,您需要具有访问该文件的适当权限。首先,在您要查询的存储帐户上授予自己‘’角色。

参考微软的官方文件:使用Azure门户分配Azure角色

我试着复制同样的东西,这对我来说很好。

  1. 确保您的Blob/ADLS存储帐户在Data选项卡下链接。如果没有链接,请单击上面显示的图像中的+符号链接。

  1. 在容器中的文件名上,单击New SQL Query并选择Select TOP 100 Rows

  1. 您将得到如下所示的自动生成的代码。
代码语言:javascript
运行
复制
-- This is auto-generated code
SELECT
    TOP 100 *
FROM
    OPENROWSET(
        BULK 'https://<storage_name>.dfs.core.windows.net/sink/business (1).csv',
        FORMAT = 'CSV',
            PARSER_VERSION = '2.0'
    ) AS [result]

这将工作良好,现在,您将得到预期的结果。请参阅下图。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73703194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档