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

Azure SQL服务主体在SSMS/SqlCmd中认证失败求助

解决服务主体登录Azure SQL Database失败的问题

问题场景

已完成以下操作,但使用服务主体(名称/客户端ID+密钥)通过SSMS(v19)或sqlcmd连接Azure SQL Database时,仍提示「用户登录失败」:

  • 创建服务主体及密钥
  • 为服务主体分配API权限
  • 将服务主体作为外部提供者添加为数据库用户并授予db_owner权限:
    CREATE USER [******] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_owner ADD MEMBER *****;
    
  • 尝试将服务主体设置为Azure SQL Database的Entra管理员

需求背景:通过GitHub Action拉取yaml中的架构和权限信息,自动完成SQL数据库的架构创建与权限配置,需稳定的数据库登录权限。


排查与解决方案

1. 确认Entra管理员配置生效

  • 设置Entra管理员后,Azure后台同步需要5-10分钟,请勿立即测试连接
  • 在Azure Portal的SQL Server -> 安全性 -> Active Directory管理员中,确认服务主体已被正确添加,状态显示「已配置」

2. 验证服务主体权限配置

  • 连接Azure SQL无需额外分配Graph API权限,仅需以下二选一:
    • 服务主体被设置为SQL Server的Entra管理员
    • SQL Server已启用Azure AD身份验证(在SQL Server -> 安全性 -> 身份验证中确认),且服务主体已被添加为目标数据库的外部用户并授予对应权限

3. 检查数据库用户创建语句正确性

  • CREATE USER中的主体名称需与Entra ID中服务主体的客户端ID或显示名称完全一致(Azure SQL对名称大小写敏感)
  • 执行以下语句验证数据库用户是否存在:
    SELECT name, type_desc FROM sys.database_principals WHERE name = '你的服务主体名称/客户端ID';
    
    若结果为空,需重新执行创建用户语句

4. 修正SSMS/sqlcmd连接参数

SSMS连接要点:

  • 身份验证选择「Azure Active Directory - 服务主体」
  • 用户名填写服务主体的客户端ID(优先用ID,避免显示名称含特殊字符导致识别失败)
  • 必须指定目标数据库名称(若留空默认连接master库,而你仅在业务库中创建了用户)

sqlcmd连接命令:

必须添加-G参数指定Azure AD身份验证,示例:

sqlcmd -S your-server.database.windows.net -d your-db-name -U 服务主体客户端ID -P 服务主体密钥 -G

5. GitHub Action场景优化

  • 建议使用Azure CLI获取访问令牌替代直接传递密钥,更安全稳定:
    - name: Azure Login
      uses: azure/login@v1
      with:
        creds: ${{ secrets.AZURE_CREDENTIALS }}
    
    - name: 执行SQL脚本
      uses: azure/sql-action@v1
      with:
        server-name: your-server.database.windows.net
        database-name: your-db-name
        sql-file: ./schema-and-perms.sql
        azure-connection-auth: sqlazure-ad-access-token
    
  • 若使用sqlcmd,确保密钥已存入GitHub Secrets,避免明文暴露

6. 检查SQL Server防火墙规则

  • 在Azure Portal的SQL Server -> 安全性 -> 防火墙和虚拟网络中,开启「允许Azure服务和资源访问此服务器」(适合自动化场景)
  • 若需限制IP,需添加GitHub Action运行环境的出口IP

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 00:02:18