use*_*867 39 sql-server permissions role
当谈到 SQL Sever 中的数据库权限管理领域时,我是非常绿色的。
让我们举一个简单的例子。
假设帐户“admin”是架构 A、B 和 C 的所有者。
还有另一个帐户“minion”,您希望对在模式 A、B 和 C 下创建的任何对象(表/视图)拥有完全权限(更新/删除/插入/选择/更改)。
这可能吗?还是每次在这些模式下添加表/视图时都必须执行授权语句?(对我来说似乎有点傻)。
Mar*_*son 58
您可以GRANT架构对现有所有内容以及该架构中将存在的所有内容有效的权限。
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>;
Run Code Online (Sandbox Code Playgroud)
此外,如果您想拒绝对该架构中某个对象的权限,您可以这样做。
DENY INSERT ON OBJECT::<schema>.<object> TO <user>;
Run Code Online (Sandbox Code Playgroud)
Kin*_*hah 19
为了进一步简化,您可以使用角色来完成您正在寻找的工作。
为角色分配权限后,您只需将用户添加到角色即可。这样您就不必管理单个用户的权限。用户继承授予角色的权限。
下面是一个让你开始的例子:
-- 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
Run Code Online (Sandbox Code Playgroud)