让我们保持一个简单的例子。
说帐户“ admin”是...的所有者架构A,B和C。
另一个帐户“ minion”要在其下创建的任何对象(表/视图)具有完全权限(更新/删除/插入/选择/更改)模式A,B和C。
这可能吗?还是您每次在这些模式下添加表/视图时都必须执行Grant语句? (对我来说似乎有点愚蠢)。
#1 楼
您可以使用GRANT
模式权限,该权限对于该模式中现有的所有内容和将要存在的所有内容均有效。授予模式权限
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>;
这样,如果您要然后拒绝对该架构中某个对象的权限,则可以执行。
拒绝对象权限
DENY INSERT ON OBJECT::<schema>.<object> TO <user>;
#2 楼
为了进一步简化,您可以使用角色来完成所需的工作。为角色分配权限后,就可以将用户添加到角色中。这样,您不必管理单个用户的权限。用户继承授予角色的权限。
下面是一个入门的示例:
-- Create the database role
CREATE ROLE TableSelector AUTHORIZATION [dbo]
GO
---- Grant access rights to a specific schema in the database
GRANT
SELECT, INSERT, UPDATE, DELETE, ALTER
ON SCHEMA::dbo
TO TableSelector
GO
-- Add an existing user to the new role created
EXEC sp_addrolemember 'TableSelector', 'MyDBUser'
GO
-- Revoke access rights on a schema from a role
DENY ALTER -- you can customize here ...
ON SCHEMA::dbo
TO TableSelector
评论
如果架构或用户名具有特殊字符,也请使用方括号。例如.... SCHEMA :: [模式]至[公司名称/joshua.duxbury]
–约书亚·达克斯伯里(Joshua Duxbury)
18年4月18日在10:17
在Azure中不起作用,为什么? (命令有效,但是SSMS出现并说“您不是Db所有者。等等等等。您可能无法保存该表”,而且确实,您不能(将ALL全部授予数据库(显示权限'Database','
–Traderhut游戏
18年8月26日在0:06