能否通过SQL Server Management Studio使用服务主体连接Azure SQL数据库
服务主体使用client id/secret连接SSMS的解决方案
问题原因
你此前选择的Azure Active Directory - 密码身份验证方式仅支持普通AAD用户账号的密码登录逻辑,不兼容服务主体的client id/secret验证规则,因此会出现同一份凭证在C#代码中可用、但SSMS登录失败的情况:你的C#代码一般是通过Azure Identity SDK主动获取服务主体的访问令牌传入连接,或使用了支持服务主体验证的连接字符串参数,所以可以正常完成鉴权。
正确连接步骤
- 首先确认你的SSMS版本为v18.0及以上,低于该版本的SSMS没有内置服务主体验证选项,无法直接通过UI完成连接,需要先升级到最新稳定版
- 打开SSMS的「连接到服务器」窗口,身份验证项选择Azure Active Directory - 服务主体
- 在「客户端ID」输入框填入你的服务主体对应的应用程序(客户端)ID
- 在「客户端密码」输入框填入你生成的服务主体密钥
- 填写Azure SQL服务器地址、目标数据库等常规连接信息后,点击「连接」即可完成登录
额外校验项
如果按照上述步骤仍然连接失败,可以检查两个配置:
- 确认该服务主体已经被授予目标Azure SQL实例的访问权限,你已将其设置为AAD管理员的情况下无需额外配置权限
- 确认客户端密码没有过期,且填写时没有多余的空格或特殊字符转义问题
内容的提问来源于stack exchange,提问作者Ilya Chernomordik
相关产品推荐
相关产品推荐

