Azure SQL可否创建数据库链接访问Synapse Serverless SQL池
可行性结论
完全可行。Azure SQL数据库不需要依赖传统关系型数据库的database link组件,通过原生内置的PolyBase跨源查询能力,就可以直连Azure Synapse Analytics Serverless(按需)SQL Pool,实现本地Azure SQL财务数据表、和Synapse侧基于Data Lakehouse Parquet文件构建的外部表的关联查询。
前置要求
- Azure SQL数据库服务层级需支持PolyBase能力:标准层S3及以上、业务关键层、超大规模层均默认支持,基础层、S0/S1/S2标准低层不支持该能力。
- 网络连通:确保Azure SQL和Synapse Serverless SQL Pool之间网络可达,可根据自身网络架构选择公网白名单、VNet对等、私有端点对接任意一种连通方式。
- 权限准备:提前准备好可访问Synapse Serverless目标库、对应Parquet外部表,以及外部表挂载的Data Lake存储路径的认证凭据(支持SQL账号、AAD服务主体两种认证方式)。
具体配置步骤
- 在Azure SQL目标库中创建数据库主密钥,用于加密存储跨源访问凭据:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '自定义强加密密码';
- 创建数据库范围凭据,填入提前准备好的Synapse访问认证信息:
CREATE DATABASE SCOPED CREDENTIAL SynapseAccessCred WITH IDENTITY = 'Synapse侧登录账号/服务主体ID', SECRET = '对应账号密码/服务主体密钥';
- 创建指向Synapse Serverless SQL Pool的外部数据源:
CREATE EXTERNAL DATA SOURCE SynapseServerlessSource WITH ( TYPE = RDBMS, LOCATION = 'Synapse Serverless SQL Pool的连接端点,1433', DATABASE_NAME = 'Synapse侧存储Parquet外部表的数据库名', CREDENTIAL = SynapseAccessCred );
- 为需要关联查询的Synapse侧Parquet外部表,在Azure SQL中创建结构完全对应的外部表映射。完成后即可直接编写T-SQL语句,通过JOIN关联Azure SQL本地财务集市表和映射后的外部表,实现跨源联合查询。
优化提示
- 查询时尽量在WHERE条件中带上可下推的过滤字段,Azure SQL会自动将过滤逻辑下推到Synapse Serverless侧执行,避免全量拉取湖仓数据到Azure SQL侧计算,大幅提升查询性能。
- 如果当前使用的Azure SQL服务层级不支持PolyBase,可换用Synapse Link for SQL将Azure SQL数据实时同步到Synapse侧,直接在Synapse Serverless池中完成两类数据的关联查询,无需在Azure SQL侧做额外配置。
内容的提问来源于stack exchange,提问作者fbglv
相关产品推荐
相关产品推荐

