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

如何通过服务主体连接Synapse Analytics无服务器SQL池数据库?

解决服务主体连接Synapse无服务器SQL池的登录失败问题

1. 配置服务主体在无服务器数据库的权限

无服务器SQL池与专用池的权限体系独立,需手动为服务主体配置数据库层面的登录与用户权限:

  • 登录Synapse工作区的无服务器SQL池(通过Synapse Studio或SSMS),执行以下SQL:
    -- 用服务主体的应用程序ID创建登录
    CREATE LOGIN [服务主体应用ID] FROM EXTERNAL PROVIDER;
    
    -- 切换到目标数据库db_test
    USE db_test;
    
    -- 创建关联登录的数据库用户
    CREATE USER [服务主体应用ID] FOR LOGIN [服务主体应用ID];
    
    -- 赋予必要权限(根据业务需求调整,示例为读写权限)
    ALTER ROLE db_datareader ADD MEMBER [服务主体应用ID];
    ALTER ROLE db_datawriter ADD MEMBER [服务主体应用ID];
    

2. 验证连接字符串参数

确保连接字符串的核心参数准确:

  • UID必须是服务主体的应用程序ID(Client ID),而非显示名称或其他标识
  • PWD为服务主体的客户端密钥,需确认密钥未过期或被撤销
  • 显式添加Encrypt=Yes参数(ODBC Driver 18默认强制加密,避免加密配置冲突),调整后的连接字符串示例:
    "driver={ODBC Driver 18 for SQL Server};server=tcp:xxxx-ondemand.sql.azuresynapse.net;port=1433;database=db_test;UID=服务主体应用ID;PWD=服务主体密钥;Authentication=ActiveDirectoryServicePrincipal;Encrypt=Yes;"
    

3. 检查Synapse工作区防火墙设置

确认连接发起的IP地址已被纳入允许列表:

  • 登录Azure门户进入目标Synapse工作区
  • 左侧导航栏选择“防火墙和虚拟网络”
  • 添加对应IP范围,或启用“允许Azure服务和资源访问此工作区”选项(若连接来自Azure内部资源)

4. 确认服务主体状态

  • 检查服务主体是否未被禁用,客户端密钥有效
  • 若需高权限操作,可将服务主体添加到Synapse SQL管理员角色,但核心数据库权限仍需按步骤1配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:02:12