Azure Data Share映射SQL DB目标报权限错误 排查咨询
以下是可直接定位该问题的排查项和配置修正点,按优先级依次校验即可:
- 校验托管标识类型与数据库侧授权完整性
跨租户共享场景仅支持Data Share账户的系统分配托管标识,用户分配托管标识无跨租户授权能力,先进入Data Share账户的「标识」配置页,确认系统分配托管标识为开启状态,复制对应对象ID备用。
绝大多数授权遗漏点是未在目标SQL Server的master系统库创建托管标识对应的登录名,仅在业务库创建用户无法完成鉴权。使用具备管理员权限的账号连接目标SQL Server,依次执行以下T-SQL:-- 切换到master库执行,创建托管标识对应的服务登录名 USE master; GO CREATE LOGIN [你的Data Share账户名称] FROM EXTERNAL PROVIDER; GO -- 切换到目标业务库执行,创建用户并授权 USE [你的目标业务数据库名称]; GO CREATE USER [你的Data Share账户名称] FROM EXTERNAL PROVIDER; GO -- 官方文档易遗漏的必要角色:批量操作权限,映射SQL接收端必须授予 ALTER ROLE db_bulkadmin ADD MEMBER [你的Data Share账户名称]; ALTER ROLE db_datareader ADD MEMBER [你的Data Share账户名称]; ALTER ROLE db_datawriter ADD MEMBER [你的Data Share账户名称]; ALTER ROLE db_ddladmin ADD MEMBER [你的Data Share账户名称]; GO - 校验Azure RBAC角色作用域与网络配置
你配置的SQL DB Contributor角色必须直接授予在目标SQL Server实例层级,跨租户场景下从资源组、订阅层级继承的RBAC权限存在鉴权同步延迟,直接在SQL Server的访问控制(IAM)面板添加该角色授权后,等待15分钟再重试操作。
检查目标SQL Server的防火墙配置,必须勾选「允许Azure服务和资源访问此服务器」选项,跨域Data Share服务的访问请求不在Azure公开IP段内,未开启该选项时会被防火墙拦截,返回的报错提示和权限缺失完全一致,极易误判。 - 跨租户场景特殊校验
确认目标SQL Server的Azure AD认证配置正常,辅助域AAD未开启外部服务标识访问限制。可通过SSMS做连通性验证:在和目标SQL Server网络连通的环境中,选择「Azure Active Directory - 托管标识」认证方式,输入Data Share账户名尝试连接,若连接失败或无法执行建表、插入测试语句,说明数据库侧授权本身未生效,和Data Share服务逻辑无关。
检查目标数据库兼容级别,若兼容级别低于130(对应SQL Server 2016),托管标识的外部鉴权会存在兼容问题,需将兼容级别调整至130及以上。 - 特殊配置场景校验
若目标SQL DB开启了客户管理密钥(CMK)的TDE加密,还需要给Data Share托管标识授予对应密钥保管库的Key Vault Crypto Service Encryption User权限,否则服务无法向加密数据库写入数据。
确认你选择的映射目标不是只读副本、Azure Synapse无服务器SQL池,以上两类目标不支持Data Share的SQL直写映射。删除之前失败的映射草稿,清空浏览器缓存后重新进入配置页选择目标库,不要复用失败配置的本地缓存。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

