You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何排查Azure Synapse无服务器SQL Pool外部表‘位置不存在’查询错误

解决Azure Synapse无服务器SQL Pool外部表查询错误

问题核心:数据源名称不匹配

你的脚本中存在明显的名称不一致问题:创建外部数据源时命名为nycsynapseefs_nycsynapseedl_dfs,但创建外部表时引用的数据源却是MyDataSource,这会导致SQL Pool无法定位到正确的存储位置。

修正后的外部表创建代码

CREATE EXTERNAL TABLE [dbo].[EMP_DATA](
  [EmployeeID] [varchar](10) NULL,
  [LastName] [varchar](20) NULL,
  [FirstName] [varchar](20) NULL)
WITH (
  LOCATION = 'emp_data.csv',
  DATA_SOURCE = [nycsynapseefs_nycsynapseedl_dfs], -- 替换为实际创建的数据源名称
  FILE_FORMAT = [SynapseDelimitedTextFormat]
)
GO

后续排查步骤(若修正后仍报错)

如果上述修改后问题依旧,按以下方向逐一排查:

  • 验证文件路径与存在性

    • 确认emp_data.csv确实存储在ADLS Gen2容器nycsynapseefs的根目录下;若文件在子文件夹中,需将LOCATION改为'子文件夹名/emp_data.csv'。
    • ADLS Gen2路径区分大小写,确保文件名和路径大小写完全匹配。
  • 检查SAS凭据有效性

    • 确保SAS令牌具备读取和列出权限,且未过期。生成SAS时需选择容器级别权限,并勾选读取、列表选项。
    • 确认SAS令牌没有多余前缀(如不要包含?),示例中的QLYMgmSXMklt%2FI1U6DcVrQixnlU5Sgbtk1qDRakUBGs%3D需是完整有效的令牌字符串。
  • 托管标识权限配置(若使用托管标识)

    • 为Synapse工作区的托管标识授予ADLS Gen2容器的存储Blob数据读取者角色,角色分配生效可能需要数分钟。
    • 使用托管标识时,凭据创建语句应为:
      CREATE DATABASE SCOPED CREDENTIAL ManagedIdentityCredential
      WITH IDENTITY = 'Managed Identity';
      
      外部数据源需引用此凭据,且LOCATION路径正确。
  • 排除文件占用问题

    • 确认emp_data.csv未被其他进程(如数据写入任务)占用,可尝试重新上传文件或复制一份新文件进行测试。

内容的提问来源于stack exchange,提问作者Imran Saeed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 03:45:00