使用服务主体通过VSCode连接Azure SQL Database遇问题求助
解决VSCode连接Azure SQL的Active Directory服务主体身份验证问题
方法一:官方SQL Server (mssql)扩展正确配置流程
你之前试过的官方SQL Server (mssql)扩展其实支持AD服务主体验证,可能是配置步骤没走对:
- 打开命令面板(Ctrl+Shift+P),输入
MS SQL: Connect - 选Create Connection Profile,按提示输入服务器地址(格式:
xxx.database.windows.net) - 身份验证类型挑Azure Active Directory - Service Principal
- 依次输入:
- 服务主体的客户端ID(也就是Application ID)
- 服务主体的客户端密钥(Client Secret)
- Azure AD的租户ID
- 目标数据库名称(可选,留空连默认库)
- 保存配置后尝试连接就行
连接失败的话先查这几点:
- 服务主体有没有被授予Azure SQL的访问权限(比如在数据库里加了用户并分配角色)
- 客户端密钥是不是有效没过期
- 租户ID、客户端ID有没有输错
方法二:通过VSCode配置文件预填参数
不想每次手动输入的话,直接在VSCode设置里配置连接参数:
- 打开设置(Ctrl+,),搜索
mssql.connections - 添加如下配置(替换成你的实际信息):
{ "server": "你的服务器地址", "database": "你的数据库名", "authenticationType": "AzureADServicePrincipal", "options": { "encrypt": true }, "clientId": "服务主体客户端ID", "clientSecret": "服务主体客户端密钥", "tenantId": "租户ID" }
保存后重新发起连接即可。
方法三:借助Azure CLI获取令牌连接
要是上面的方法都不行,试试用Azure CLI先拿令牌再连接:
- 用服务主体登录Azure CLI:
az login --service-principal -u <客户端ID> -p <客户端密钥> --tenant <租户ID>
- 获取SQL数据库的访问令牌:
az account get-access-token --resource https://database.windows.net/
- 在VSCode的mssql扩展里选Azure Active Directory - Access Token,把拿到的令牌粘贴进去,再输入服务器和数据库名就能连接了。
内容的提问来源于stack exchange,提问作者Dobry Nikolov
相关产品推荐
相关产品推荐

