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

基于Windows Server AD的Synapse Serverless登录查询视图报错

Synapse Serverless AD安全组用户查询视图权限问题

问题场景

执行以下SQL创建Windows Server AD安全组的登录和用户,并赋予db_datareader角色:

USE Master
GO
CREATE LOGIN [Datawarehouse - Blabla]  FROM EXTERNAL PROVIDER;

USE DataWareHouseServerless
GO
CREATE USER [Datawarehouse - Blabla] FROM LOGIN  [Datawarehouse - Blabla];

USE DataWareHouseServerless
GO
ALTER ROLE db_datareader ADD MEMBER [Datawarehouse - Blabla];

安全组成员可成功连接,但查询视图ViewTheyTriedToQuery时触发错误:

Msg 15151, Level 16, State 1, Procedure ViewTheyTriedToQuery, Line 1 [Batch Stare Line 0] 
Cannot find the CREDENTIAL 'WorkspaceIdentity', because it does not exist or you do not have 
permission. 

Msg 4413, Level 16, State 1, Line 282
Could not use view or function 'ViewTheyTriedToQuery' because of binding errors. 

相关现象:

  • SSMS中可正常看到对应的登录和用户
  • 本地SQL登录/用户可正常查询该视图
  • 将AD安全组设为Synapse管理员后可正常查询

原因分析

报错核心是用户缺少访问WorkspaceIdentity凭据的权限。Synapse Serverless的视图若通过工作区身份访问底层存储(如ADLS Gen2),需要调用WorkspaceIdentity凭据,而db_datareader角色仅提供库内数据读取权限,不包含凭据访问权限。管理员账号默认拥有该凭据的控制权,因此可正常查询。

解决步骤

1. 授予AD安全组登录对WorkspaceIdentity凭据的权限

在master数据库执行以下SQL,赋予安全组登录凭据的控制权限:

USE Master
GO
GRANT CONTROL ON CREDENTIAL::[WorkspaceIdentity] TO [Datawarehouse - Blabla];

2. 确认底层存储的访问权限

确保AD安全组成员拥有视图依赖存储(如ADLS Gen2容器)的访问权限,可通过以下方式配置:

  • 给安全组分配存储账户的Blob数据读者或存储 blob 数据参与者RBAC角色
  • 若使用ACL,确保安全组对存储路径有读取权限

3. 验证权限生效

重新连接Synapse Serverless,执行视图查询,确认错误已消除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 19:22:24