在这里输入图像描述需要你的帮助才能找到我到底错在哪里。
问题语句-在Azure Synapse中运行以下SQL:
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‘无法打开,因为它不存在或它是由另一个进程使用。
请注意-
我的理解是,即使无法通过存储帐户IAM授予授权,仍然可以让synapse使用适当的ACL访问所需的文件。
然而,我得到了同样的错误,我粘贴在上面。作为参考,我在容器(根)和文件级别上附加ACL分配的屏幕截图。
你能帮帮我到底做错了什么吗?
谢谢!!
发布于 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角色
我试着复制同样的东西,这对我来说很好。
Data
选项卡下链接。如果没有链接,请单击上面显示的图像中的+
符号链接。
New SQL Query
并选择Select TOP 100 Rows
。
-- 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]
这将工作良好,现在,您将得到预期的结果。请参阅下图。
https://stackoverflow.com/questions/73703194
复制相似问题