我如何仅向数据库特定用户(开发人员)授予Procedures/Functions
的CREATE/ALTER
权限,而不允许他们创建/更改/删除表格或其他功能呢?是否有可能实现这一点?
我如何仅向数据库特定用户(开发人员)授予Procedures/Functions
的CREATE/ALTER
权限,而不允许他们创建/更改/删除表格或其他功能呢?是否有可能实现这一点?
你可以尝试以下方法:
创建一个角色
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]
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