如何为SQL Server 2019用户仅授予创建/删除视图权限?
解决方案:实现SQL Server用户只读+仅创建/删除视图的权限
针对你的需求(数据库只读,仅允许CREATE/DROP VIEW,禁止CREATE/DROP表、架构、数据库),可以通过以下权限组合实现,避免直接授予架构ALTER带来的过度权限:
核心思路
通过专属隔离架构限制用户视图的创建范围,结合数据库级权限和内置角色,精准控制操作边界:
步骤1:创建用户专属视图架构
为用户创建独立架构存放其视图,避免影响其他架构对象:
CREATE SCHEMA [User_Views]; -- 可替换为自定义架构名
步骤2:授予用户对专属架构的控制权
让用户能在该架构内创建、删除自己的视图:
GRANT CONTROL ON SCHEMA::[User_Views] TO [你的用户名];
步骤3:授予数据库级创建视图权限
允许用户在数据库内创建视图(结合专属架构限制,实际仅能在自己的架构内操作):
GRANT CREATE VIEW TO [你的用户名];
步骤4:授予数据库只读权限
通过内置角色db_datareader赋予用户所有表、视图的只读访问权:
ALTER ROLE db_datareader ADD MEMBER [你的用户名];
步骤5:禁用敏感权限(安全加固)
明确拒绝用户创建表、修改架构/数据库等操作:
-- 禁止创建表 DENY CREATE TABLE TO [你的用户名]; -- 禁止修改任何架构(专属架构的CONTROL权限已覆盖必要操作) DENY ALTER ANY SCHEMA TO [你的用户名]; -- 禁止修改数据库配置 DENY ALTER ANY DATABASE TO [你的用户名];
权限验证
执行完上述操作后,用户将具备:
- 对数据库所有表、视图的只读访问权
- 仅能在
User_Views架构内创建和删除视图 - 无法创建/删除表、修改其他架构或数据库配置
内容的提问来源于stack exchange,提问作者AlexisPa
相关产品推荐
相关产品推荐

