Azure Synapse Notebook引用REST链接服务遇方法不存在问题求助
解决Azure Synapse Notebook中检索链接服务的问题
错误原因分析
你的代码存在三个核心问题:
- 方法调用路径错误:Azure Synapse Artifacts SDK中,获取链接服务的方法属于
ArtifactsClient的linked_services子客户端,而非直接在客户端实例上调用。 - 凭证类名称错误:
DefaultCredentials应为DefaultAzureCredential,需从azure.identity包导入。 - 通配符不兼容:
get_linked_service仅支持精确匹配服务名称,你使用的REST_Dev_*无法生效,批量匹配需用列表查询方法。
修正后的SDK调用代码
# 导入正确的依赖包 from azure.synapse.artifacts import ArtifactsClient from azure.identity import DefaultAzureCredential # 初始化凭证与客户端 credentials = DefaultAzureCredential() synapse_endpoint = "https://<your-workspace-name>.dev.azuresynapse.net" synapse_client = ArtifactsClient(credentials=credentials, endpoint=synapse_endpoint) # 方式1:精确获取单个链接服务 linked_service_name = "REST_Dev_XXX" # 替换为实际精确名称 linked_service = synapse_client.linked_services.get_linked_service(linked_service_name=linked_service_name) print(linked_service.properties) # 方式2:批量查询匹配前缀的链接服务(处理通配符场景) linked_services_list = synapse_client.linked_services.list_linked_services_by_workspace() target_services = [s for s in linked_services_list if s.name.startswith("REST_Dev_")] for service in target_services: print(f"服务名称:{service.name},属性:{service.properties}")
Synapse Notebook专属简化方法(推荐)
在Synapse Notebook中,可直接使用内置的mssparkutils工具获取链接服务,无需额外安装SDK,操作更便捷:
# 获取单个链接服务 linked_service = mssparkutils.credentials.getLinkedService("REST_Dev_XXX") print(linked_service) # 批量查询匹配前缀的链接服务(需先安装依赖) !pip install azure-mgmt-synapse from azure.mgmt.synapse import SynapseManagementClient from azure.identity import DefaultAzureCredential client = SynapseManagementClient(DefaultAzureCredential(), "<your-subscription-id>") linked_services = client.linked_services.list_by_workspace("<resource-group-name>", "<your-workspace-name>") for ls in linked_services: if ls.name.startswith("REST_Dev_"): print(ls.name, ls.properties)
内容的提问来源于stack exchange,提问作者sac
相关产品推荐
相关产品推荐

