Synapse Analytics:如何创建指向无服务器SQL数据库的链接服务?
解决Synapse数据复制活动访问外部SQL数据库的问题
核心原因
你创建的是Synapse无服务器SQL池中的外部数据库(基于ADLS Gen2的文件),而常规的SQL链接服务仅适配Synapse专用SQL池/托管实例,所以看不到无服务器的库,也没法直接用SQL脚本在复制活动中访问。
可行方案
方案1:直接用ADLS Gen2链接服务访问文件
既然数据源是ADLS Gen2里的.csv和.parquet文件,绕开无服务器SQL池直接对接:
- 在复制活动源端选择Azure Data Lake Storage Gen2链接服务
- 指定目标文件路径,匹配对应的文件格式(CSV/Parquet)
- 如需筛选数据,可在复制活动源设置的查询选项中配置简单过滤逻辑,复杂转换可改用数据流动实现
方案2:将无服务器数据导入专用SQL池后再对接
- 在Synapse工作区创建Synapse专用SQL池
- 用无服务器SQL池的查询将数据同步到专用SQL池的表中:
INSERT INTO 专用SQL池库名.dbo.目标表名 SELECT * FROM 无服务器SQL池库名.dbo.外部表名 - 创建指向该专用SQL池的链接服务,此时就能看到专用SQL池的数据库(而非仅master)
- 在复制活动中使用这个链接服务,即可执行自定义SQL查询或直接访问表
方案3:用Synapse数据流动替代复制活动
如果需要复杂SQL逻辑处理,数据流动更适配无服务器SQL池:
- 在数据流动中添加源数据集,选择Synapse无服务器SQL池作为源
- 直接在源设置中输入自定义SQL查询获取数据
- 后续可直接将处理后的数据写入目标存储或数据库
关键注意事项
- 无服务器SQL池是计算服务,无持久化存储,无法被常规SQL链接服务识别,因此不能直接作为复制活动的SQL源
- 若必须在复制活动中用SQL脚本处理,专用SQL池是唯一适配链接服务的选项
内容的提问来源于stack exchange,提问作者DataWrangler1980
相关产品推荐
相关产品推荐

