创建ADLS到Synapse无服务器SQL池链接服务时遇SqlOperationFailed错误
解决Synapse无服务器SQL池访问ADLS外部表错误(SqlErrorNumber=16562)
针对遇到的SqlErrorNumber=16562错误(外部表无法访问,提示位置不存在或被占用),可以按以下步骤排查:
验证ADLS路径准确性
检查外部表定义中的LOCATION参数,确保和ADLS Gen2中的实际路径完全一致(注意ADLS路径区分大小写),确认目标容器、文件夹未被删除或重命名。排查资源占用情况
确认ADLS中目标文件/文件夹是否被其他进程占用:比如运行中的ADF管道、Synapse批处理作业,或者本地工具(如Azure Storage Explorer)正在读写该资源。可以尝试手动移动或删除该路径下的测试文件,验证是否能正常操作,以此判断是否存在占用。检查权限配置
确认Synapse无服务器SQL池的托管标识(或服务主体)对ADLS目标容器拥有Storage Blob Data Contributor权限,仅Reader权限无法满足外部表的读写需求。同时检查外部数据源的凭据:如果用SAS令牌,确认令牌未过期且权限覆盖目标路径;如果用托管标识,确认标识已正确绑定权限。校验外部表定义
重新生成外部表的创建脚本,确保DATA_SOURCE关联正确的ADLS数据源,FILE_FORMAT匹配文件类型(如Parquet、CSV)。可执行以下SQL查询检查外部表及数据源定义:SELECT * FROM sys.external_tables WHERE name = 'Ren'; SELECT * FROM sys.external_data_sources WHERE name = '<你的数据源名称>';清理缓存与会话
在Data Studio或Synapse Studio中关闭所有相关查询窗口,重启数据库连接。同时执行以下语句清除Synapse无服务器池的元数据缓存:DBCC DROPCLEANBUFFERS; DBCC FREEPROCCACHE;
内容的提问来源于stack exchange,提问作者esro
相关产品推荐
相关产品推荐

