问题描述
我使用的代码如下
CREATE ROLE external_users;
grant Select,Update,Delete,Alter,Execute,Insert,Create View,create Table on database::db_1 to external_users;
deny ALTER ANY USER,ALTER ANY ROLE,CREATE ROLE on database::db_1 to external_users;
--Creating a user in db_1 for the user and then adding it to the above role
CREATE USER user for login user;
EXEC sp_addrolemember 'external_users','user';
我拒绝了 DELETE 权限,但用户也可以删除表。(不能拒绝 ALTER 权限,因为我希望用户创建表)
我还创建了一个触发器,但不知道如何在特定用户或角色上启用它。
基本上,我想阻止某些角色的用户删除表(其他角色的用户可以执行这些功能)。他们可以创建表,但不能删除表。
解决方法
如果你能ALTER
一张桌子,你就可以DROP
一张桌子。它内置于权限中。
https://docs.microsoft.com/en-us/sql/t-sql/statements/drop-table-transact-sql?view=sql-server-ver15