SQL Server - 授予对整个架构与对象的权限?

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)