Azure SQL Server实例创建仅能查询指定两张表的用户方法咨询
在Azure SQL Server中创建仅拥有指定表SELECT权限的用户
当然可行,Azure SQL Server完全支持这种精细化的权限控制,通过标准的SQL权限管理语句就能实现。以下是具体操作步骤:
操作步骤
1. 连接到目标数据库
使用具备ALTER ANY USER和GRANT权限的账号(如服务器管理员、数据库所有者),连接到你需要配置权限的目标业务数据库(不要连接master数据库,除非是创建登录名环节)。
2. 创建数据库用户
根据你使用的身份类型选择对应操作:
- SQL登录用户:
-- 先在master数据库创建登录名 USE master; CREATE LOGIN [LimitedTableUser] WITH PASSWORD = 'YourStrongPasswordHere!'; GO -- 切换到目标数据库创建关联的数据库用户 USE [YourTargetDBName]; CREATE USER [LimitedTableUser] FOR LOGIN [LimitedTableUser]; GO
- Azure AD用户:
USE [YourTargetDBName]; CREATE USER [limiteduser@yourdomain.com] FROM EXTERNAL PROVIDER; GO
3. 授予指定表的SELECT权限
直接对用户授予两张目标表的查询权限:
USE [YourTargetDBName]; -- 替换SchemaName、TableName为实际架构和表名,默认架构是dbo GRANT SELECT ON [SchemaName].[TargetTable1] TO [LimitedTableUser]; GRANT SELECT ON [SchemaName].[TargetTable2] TO [LimitedTableUser]; GO
4. (可选)用自定义角色统一管理权限
如果后续要给多个用户分配相同权限,建议创建自定义角色来统一维护:
USE [YourTargetDBName]; -- 创建自定义角色 CREATE ROLE [TableSelectOnlyRole] AUTHORIZATION [dbo]; -- 给角色授予权限 GRANT SELECT ON [SchemaName].[TargetTable1] TO [TableSelectOnlyRole]; GRANT SELECT ON [SchemaName].[TargetTable2] TO [TableSelectOnlyRole]; -- 将用户添加到角色 ALTER ROLE [TableSelectOnlyRole] ADD MEMBER [LimitedTableUser]; GO
验证权限
用创建的用户登录后,执行以下语句验证:
-- 可以正常查询授权表 SELECT * FROM [SchemaName].[TargetTable1]; SELECT * FROM [SchemaName].[TargetTable2]; -- 查询未授权表会返回权限不足错误 SELECT * FROM [SchemaName].[OtherTable];
内容的提问来源于stack exchange,提问作者Drew Burken
相关产品推荐
相关产品推荐

