我创建了一个只读用户ala:
(in master)
CREATE LOGIN reader WITH password='YourPWD';
CREATE USER readerUser FROM LOGIN reader;
(in target db)
CREATE USER readerUser FROM LOGIN reader;
EXEC sp_addrolemember 'db_datareader', 'readerUser';
这可以很好地拒绝用户执行除从目标数据库中的表读取之外的任何操作。
但是,它仍然允许他们从 Management Studio 中删除目标数据库。
我如何拒绝他们的数据库删除权限?
最佳答案
您能澄清一下数据库删除权的含义吗?你的意思是删除数据库吗?如果是,则 DROP DATABASE 的权限在 master 中。因此,请确保登录不是 dbmanager 角色的一部分。
如果您的意思是从表中删除数据,那么默认情况下,数据库中的用户没有该权限,除非您将他们添加到 db_datawriter 或 db_owner 等角色中,或者显式授予 DELETE 权限。
您可以通过执行以下操作来检查用户的权限:
execute as user = 'readerUser';
select * from fn_my_permissions (NULL, 'DATABASE');
revert;
go
关于sql-server - 无法删除数据库的 SQL Azure 只读用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30480540/