我创建了一个数据库和一些dbo.tables。现在我想创建一个可以读写这些表的用户,但不能修改或删除。但是我希望这个用户能够创建自己的表,并让他用这些表做他想做的事。
这可能吗?有人可以解释一下如何做到这一点?
答案 0 :(得分:3)
您可以将用户分配到db_datareader
& db_datawriter
架构的dbo
个角色。
但是,允许用户仅创建和修改新表;您必须创建不同的架构并为此架构分配db_owner
权限。
你应该知道,这样做可能会产生问题,因为你可以在不同的模式下有两个同名的表。因此,您应该确保查询始终说明对象的所有者。
e.g。
dbo.MyTable
CustomSchema.MyTable
更新:
好的,我认为这些是您需要采取的步骤:
db_ReportingRole
,并将相关用户添加到此角色。Reporting
,并使db_ReportingRole
成为此架构的所有者。CREATE
,DROP
等权限分配给db_ReportingRole
db_datareader
架构的db_datawriter
和dbo
角色中。这应该允许您拥有一个可以读取和写入dbo
模式的用户,但应该能够修改表等。但是,因为他们在db_ReportingRole
中应该具有完全访问权限在Reporting
模式中修改,创建,删除等表。 (假设您已为db_ReportingRole
我希望这适合你。