我有一个数据库_Repository
和一个包含少数员工的登录COMPANY\ANALYST_USERS
名,我使用的是 Microsoft SQL Server 2017。
数据库中有一些核心表,我希望登录中的人能够向其中插入行、更新行和删除行,但绝对不能自己删除表。但我也希望登录中的用户能够在该数据库中创建他们自己的表/视图,并能够删除他们创建的这些项目。是否有允许这样做的权限设置?
在 的登录属性中COMPANY\ANALYST_USERS
,在用户映射下,我将它们添加为数据库的成员db_datareader
和db_datawriter
角色,_Repository
但确保db_ddladmin
未被选中。然而,这阻止了他们创建表/视图,因此我随后授予该数据库的登录 CREATE TABLE 和 CREATE VIEW 权限。尽管如此,他们仍然没有创建表或视图的权限。
创建他们拥有的新架构。例如
没有办法授予他们在模式中创建表的能力并可靠地限制他们对该模式中其他对象的权限。
对于这种情况,您可能需要考虑创建一个新的数据库角色,并明确授予您对此登录所需的每个对象的权限。例如:
为此,我会接受 David Browne 的回答。
我会谨慎使用内置数据库角色,因为权限是隐式授予的。如需进一步阅读,请查看此SQL Server 2017 权限海报。
为此,我授予
ALTER ANY SCHEMA
了[COMPANY\ANALYST USERS]
,但随后对该用户的所有“核心”表的明确性拒绝ALTER
了,这按预期工作。