【发布时间】:2022-02-23 03:06:50
【问题描述】:
我如何才能仅将Procedures/Functions 的CREATE/ALTER 权限授予数据库的特定用户(开发人员)。我不想让他们使用Create/Alter/Drop 表或任何其他功能。
这可能吗?
【问题讨论】:
标签: sql-server
我如何才能仅将Procedures/Functions 的CREATE/ALTER 权限授予数据库的特定用户(开发人员)。我不想让他们使用Create/Alter/Drop 表或任何其他功能。
这可能吗?
【问题讨论】:
标签: sql-server
你试试下面的方法
创建角色
CREATE ROLE [user_dev] AUTHORIZATION db_securityadmin;
GO
GRANT CREATE PROCEDURE TO [user_dev];
GRANT SELECT, INSERT, UPDATE, DELETE, ALTER, EXECUTE, VIEW DEFINITION ON SCHEMA::dbo TO [user_dev]
为测试创建用户和登录名并添加到 user_dev 角色
CREATE LOGIN test WITH PASSWORD = 'dfgdfg'
CREATE USER test
EXEC sp_addrolemember @rolename = 'user_dev', @membername = 'test';
GO
然后创建一个触发器来限制 user_dev 角色创建表和删除
CREATE TRIGGER tr_db_DenyDropAlterTable
ON DATABASE
FOR DROP_TABLE, ALTER_TABLE
AS
BEGIN
IF IS_MEMBER('user_dev') = 1
BEGIN
PRINT 'Not allowed';
ROLLBACK TRAN;
END;
END;
GO
【讨论】: