我正在尝试为 SQL Azure 中的数据库创建一个仅作为只读访问权限的包含用户。我正在做的是:
- 使用我的管理员帐户通过 SSMS 连接到数据库。
- 右键单击有问题的数据库并选择新查询。
然后我输入了以下内容:
CREATE USER DEMO_dbreader WITH PASSWORD = 'pass@word1'
EXEC sp_addrolemember N'db_datareader', N'DEMO_dbreader'`
之后,我在 SSMS 中断开与数据库的连接,并使用我刚刚创建的新 SQL 帐户重新连接。然后我输入以下内容作为测试:
CREATE table testing123 (id int)
令我惊讶的是,我可以创建表(!?!)我也可以截断它们并删除它们(?!?)不知道这里到底发生了什么。我错过了什么吗?
我需要用户包含在这个数据库中,而不是存在于它之外。
这永远不应该发生。db_datareader 将只授予对数据库的选择访问权限。
我在我的 Azure 数据库中使用了您的查询,但无法创建表,用户只能选择访问数据库。
要么用户获得了提升的访问权限,要么您可能使用管理员帐户登录。在不同的用户数据库中进行相同的测试(只是为了确保尚未创建用户),然后使用用户名连接并运行下面的查询。
当我测试同一个用户时,它只返回选择访问权限。