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

如何在Linux命令行执行Azure Synapse托管SQL池SQL语句及Kerberos配置

在Linux命令行执行Azure Synapse托管SQL池SQL命令的简便方案(含Kerberos认证配置)

核心结论

  1. 简便执行方式:最贴合你现有使用习惯的方案是使用sqlcmd工具配合Azure Active Directory(AD)认证;也可使用Azure CLI的az synapse sql query命令直接执行SQL。
  2. Kerberos认证支持:可以通过Kerberos认证(配合sqlcmd的-G选项)连接Azure Synapse托管SQL池,配置步骤如下:

配置步骤(基于现有Kerberos环境)

1. 确保sqlcmd版本符合要求

需要使用mssql-tools18及以上版本,旧版本可能不支持Synapse的AD Kerberos认证。检查版本:

sqlcmd -? | grep Version

若版本过低,可通过官方源更新安装(以Ubuntu为例):

curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
sudo apt update && sudo apt install mssql-tools18 unixodbc-dev

2. 配置Kerberos客户端适配Azure AD

编辑/etc/krb5.conf文件,添加你的Azure AD租户对应的Kerberos Realm配置(替换<your-aad-domain>为实际的AD域名,如contoso.com或contoso.onmicrosoft.com):

[libdefaults]
    default_realm = <your-aad-domain>
    dns_lookup_realm = true
    dns_lookup_kdc = true

[realms]
    <your-aad-domain> = {
        kdc = kerberos.<your-aad-domain>
        admin_server = kerberos.<your-aad-domain>
        default_domain = <your-aad-domain>
    }

[domain_realm]
    .<your-aad-domain> = <your-aad-domain>
    <your-aad-domain> = <your-aad-domain>

保存后重启Kerberos服务(部分系统无需重启,直接生效):

sudo systemctl restart krb5kdc

3. 获取Azure AD的Kerberos票据

使用kinit命令获取AD用户的Kerberos票据:

kinit your-aad-username@<your-aad-domain>

输入AD用户密码后,用klist验证票据是否有效:

klist

若输出包含有效票据条目,说明获取成功。

4. 使用sqlcmd连接Synapse托管SQL池

执行以下命令连接(替换<synapse-workspace-name>为你的Synapse工作区名称,<pool-name>为托管SQL池名称):

sqlcmd -S <synapse-workspace-name>.sql.azuresynapse.net,1433 -d <pool-name> -G
  • -G选项指定使用AD认证,此时会自动读取已获取的Kerberos票据完成身份验证;
  • 若需要直接执行SQL命令,可添加-Q参数:
    sqlcmd -S <synapse-workspace-name>.sql.azuresynapse.net,1433 -d <pool-name> -G -Q "SELECT TOP 10 * FROM your_table;"
    

常见问题排查

  • 票据获取失败:检查krb5.conf的Realm配置是否正确,确保本地网络能访问Azure AD的KDC服务器;
  • 认证错误:使用kdestroy销毁旧票据后重新执行kinit,或检查Synapse中是否已为该AD用户分配了数据库访问权限;
  • 连接超时:确认本地防火墙允许访问Synapse的1433端口,且Synapse工作区的防火墙规则已放行你的IP地址。

内容的提问来源于stack exchange,提问作者Danny.Icha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 23:20:32