sql-server - 无法删除数据库的 SQL Azure 只读用户

标签 sql-server azure azure-sql-database

我创建了一个只读用户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/

相关文章:

sql - 如何删除此表中的日期?

文本文件格式的 SQL 代理作业输出

azure - 在 Kusto 查询语言(Azure Monitor 日志)中仅获取类别内的唯一值

python - 使用 python 代码解释 Azure automl 模型

c# - 在Azure函数中解析C#中的Json

azure - 在 azure 应用程序中允许database.windows.net范围的位置

silverlight - 如何使用 Microsoft Silverlight 连接到我的 SQL Azure 数据库?

sql-server - 如何在 SQL Server 中将上一个结果集用于下一个查询

sql-server - 并非所有 LSN 都映射到日期

python - pyodbc:如何重试从 transient 错误中恢复?