如何在Azure SQL Server中获取DBO账户权限并解决AAD认证错误
解决SHOWPLAN权限授予及Azure Data Studio连接报错问题
问题背景
需要给指定账户授予SHOWPLAN权限,但日常用于修改数据库架构的账户无GRANT权限,推测dbo账户具备该权限但未留存登录信息,需通过Azure Portal获取拥有同等权限的登录方式。同时Azure当前权限文档与界面不符,使用Azure Data Studio连接时遇到以下身份验证错误:
Failed to authenticate the user in Active Directory (Authentication=ActiveDirectoryInteractive).
Error code 0xinvalid_request
AADSTS900021: Requested tenant identifier '00000000-0000-0000-0000-000000000000' is not valid. Tenant identifiers may not be an empty GUID.
旧版Azure Portal的解决方案已失效,数据库为10年前Azure刚推出时创建,曾因微软系统迁移出现过问题。
报错原因分析
该错误是由于连接请求中使用了空GUID作为租户ID,大概率是Azure Data Studio的连接配置未正确填写租户ID,或是早期创建的数据库所在租户存在遗留配置异常(结合过往系统迁移背景)。
解决步骤
一、获取高权限登录方式以授予SHOWPLAN权限
- 检查Azure Portal的SQL服务器IAM权限
进入目标SQL服务器的「访问控制(IAM)」页面,筛选拥有SQL Server Contributor或Owner角色的用户/服务主体,这类角色持有者可通过Azure Portal或Azure Data Studio以高权限连接数据库,执行权限授予操作。 - 查找遗留SQL本地管理员账户
在SQL服务器的「设置」->「服务器管理员」页面查看,早期创建的数据库可能保留了本地SQL管理员账户(非AAD身份),若存在可直接使用该账户连接数据库,执行权限授予语句。 - 重置SQL管理员密码(需订阅级权限)
若找不到现有高权限账户,可通过Azure CLI或PowerShell重置SQL管理员密码:
重置后使用管理员账户连接数据库,运行# Azure CLI命令示例 az sql server update --name <你的SQL服务器名> --resource-group <资源组名> --admin-password <新密码>GRANT SHOWPLAN TO [目标账户名];完成权限添加。 - 配置AAD高权限用户
若数据库启用了AAD身份验证,可在SQL服务器的「Azure Active Directory」->「管理员」页面,添加AAD用户为SQL管理员,该用户即可拥有db_owner权限,执行GRANT操作。
二、修复Azure Data Studio连接报错
- 修正租户ID配置
在ADS连接对话框中,确保「租户ID」字段填写正确(可从Azure Portal的「Azure Active Directory」->「属性」中获取租户ID),禁止留空或使用空GUID。 - 切换AAD验证方式
尝试使用「Active Directory - Universal with MFA」身份验证方式替代「Interactive」,部分早期遗留租户对交互式验证支持存在问题。 - 清除AAD缓存
进入ADS的「文件」->「首选项」->「设置」,搜索「Azure Active Directory」,执行「Clear Token Cache」操作后重新尝试连接。
内容的提问来源于stack exchange,提问作者DanScan
相关产品推荐
相关产品推荐

