如何仅向数据库的特定用户(开发人员)授予CREATE/ALTER
的{{1}}权限。我不想允许他们使用Procedures/Functions
表或任何其他功能。
这可能吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
您尝试以下方式
创建角色
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