通过SQL Server Management Studio查询Azure Synapse无服务器报错:无法列出指定目录内容
以下是针对这个错误的排查和解决步骤:
检查存储账户权限
确认Synapse无服务器工作区的托管身份(或你使用的SAS令牌)具备目标存储容器的Storage Blob Data Reader权限——普通的Reader权限不足以读取Blob目录结构和内容。如果用SAS令牌,要确保令牌包含List和Read权限,有效期未过期,且路径范围完全覆盖Tables/Finance/AccountsReceivable/Transaction/CustTrans/目录。验证路径格式准确性
Azure存储路径大小写敏感,要确认查询中的路径大小写和存储容器内的实际路径完全一致(比如CustTrans和custtrans会被判定为不同路径);检查路径是否存在拼写错误、多余斜杠,同时确认外部数据源的LOCATION已经指向正确的存储容器,路径是相对于容器的相对路径,不要包含容器名称。测试基础访问能力
用相同的凭据(托管身份/SAS)通过Azure Storage Explorer直接访问目标目录,确认能看到该路径下的CSV文件,排除存储端的目录存在性问题。也可以在Synapse Studio中运行极简测试查询,获取更具体的错误提示:SELECT TOP 10 * FROM OPENROWSET( BULK 'Tables/Finance/AccountsReceivable/Transaction/CustTrans/*.csv', DATA_SOURCE = '你的数据源名称', FORMAT = 'CSV', FIRSTROW = 2 ) AS [result]排查网络与防火墙限制
如果存储账户开启了防火墙,确认已允许Synapse工作区的IP地址访问,或开启了「允许受信任的Microsoft服务访问」选项;若使用私有端点,需验证Synapse与存储账户的私有链接配置、DNS解析是否正常。核对外部数据源配置
检查创建的外部数据源是否正确关联目标存储账户:使用托管身份时,数据源的LOCATION需指向正确的存储端点;若用SAS,确认CREDENTIAL中的SAS令牌未失效、格式正确。
内容的提问来源于stack exchange,提问作者Mr. lolo

