Azure SQL Server权限配置问题:SSMS可查数据但无法查看对象
Azure SQL Server只读用户权限配置问题解决
问题场景
需配置Azure SQL Server只读用户,满足以下要求:
- 仅允许执行SELECT查询,禁止创建、插入、删除、修改操作
- 在SSMS中可展开查看Tables/Views/Programmability对象
- 能查看对象的脚本定义
当前已完成的配置:
Master数据库操作
CREATE LOGIN test1 WITH PASSWORD = 'Test123%57'; CREATE USER test1 FROM LOGIN test1;
目标业务数据库操作
CREATE USER test1 FROM LOGIN test1 WITH DEFAULT_SCHEMA=dbo; ALTER ROLE db_datareader ADD MEMBER test1; ALTER ROLE db_denydatawriter ADD MEMBER test1; GRANT SELECT TO test1; GRANT VIEW DEFINITION TO test1;
配置后用户可正常执行SELECT查询,但无法在SSMS中展开Tables/Views/Programmability对象。
解决方案
问题根源是用户缺少访问系统目录视图的权限,SSMS展开对象时需要查询这些视图获取对象列表。在目标业务数据库中执行以下补充配置:
-- 授予用户查询系统目录视图的权限 GRANT SELECT ON SCHEMA::sys TO test1; -- 确保覆盖数据库范围的VIEW DEFINITION权限 GRANT VIEW DEFINITION ON DATABASE::[YourDatabaseName] TO test1;
将[YourDatabaseName]替换为实际的目标业务数据库名称。
执行完成后,用户即可在SSMS中正常展开Tables/Views/Programmability节点,同时保持只读权限,无法执行增删改操作。
内容的提问来源于stack exchange,提问作者koolhyd
相关产品推荐
相关产品推荐

