如何使用Python在Data Factory中添加Azure Synapse Analytics链接服务
问题背景
使用Python SDK开发Azure Data Factory配置与管道过程中,已成功完成Azure Blob Storage、Azure Key Vault的链接服务创建,但在添加无服务器版Azure Synapse Analytics链接服务时,无法在azure.mgmt.datafactory.models模块中找到对应类。已知通过ADF UI可正常完成该链接服务添加,确认存在对应的Python SDK实现方式。
解决方案
无服务器Azure Synapse Analytics(无服务器SQL池)在ADF Python SDK中没有单独命名的专属类,直接复用AzureSqlDatabaseLinkedService类即可实现配置,这和UI底层的接口定义完全一致。
- 前置要求:安装的
azure-mgmt-datafactory包版本≥2.0.0,旧版本存在类缺失问题 - 连接端点填写规则:数据源地址填Synapse工作区的无服务器SQL端点,格式为
<工作区名称>-ondemand.sql.azuresynapse.net,初始数据库可填默认的master或自定义库名 - 密钥存储推荐复用已配置好的Azure Key Vault链接服务,和UI操作逻辑对齐
实现代码示例
from azure.identity import DefaultAzureCredential from azure.mgmt.datafactory import DataFactoryManagementClient from azure.mgmt.datafactory.models import ( AzureSqlDatabaseLinkedService, AzureKeyVaultSecretReference, LinkedServiceReference ) # 初始化ADF管理客户端 client = DataFactoryManagementClient( credential=DefaultAzureCredential(), subscription_id="<你的Azure订阅ID>" ) # 关联已创建完成的Key Vault链接服务 akv_ref = LinkedServiceReference(reference_name="<已存在的Key Vault链接服务名称>") # 构造无服务器Synapse链接服务对象 synapse_serverless_ls = AzureSqlDatabaseLinkedService( connection_string=AzureKeyVaultSecretReference( store=akv_ref, secret_name="<Key Vault中存储Synapse无服务器连接串的密钥名称>" ), encrypt="True", trust_server_certificate="False", connect_timeout=30 ) # 提交创建请求 client.linked_services.create_or_update( resource_group_name="<ADF所在资源组名称>", factory_name="<ADF实例名称>", linked_service_name="<自定义的Synapse链接服务名称>", linked_service=synapse_serverless_ls )
若测试场景需要直接硬编码连接串,直接给
connection_string参数传入完整连接字符串即可,生产环境不推荐该方式。创建完成后可直接在ADF UI中测试连接,功能和手动通过UI创建的链接服务完全一致。
内容的提问来源于stack exchange,提问作者Grzegorz Gabrychowicz
相关产品推荐
相关产品推荐

