我正在尝试授予用户对特定架构的访问权限。这意味着他们将能够访问特定方案中的对象,并且只能在该特定方案中创建/更改/管理对象。
尝试执行下面的代码,但是看起来它可以提供在整个数据库上创建对象的访问权限。
CREATE ROLE [NewRole]
GO
CREATE SCHEMA [schema1]
GO
ALTER AUTHORIZATION ON SCHEMA::schema1 TO [NewRole]
GO
GRANT ALTER ON SCHEMA::[schema1] TO [NewRole]
GO
GRANT CREATE TABLE TO [NewRole]
GO
GRANT CREATE VIEW TO [NewRole]
GO
GRANT CREATE PROCEDURE TO [NewRole]
有人建议如何进行此操作吗?
谢谢。
答案 0 :(得分:0)
尝试执行下面的代码,但是看起来它可以提供在整个数据库上创建对象的访问权限。
不是。 CREATE DATABASE仅可在整个数据库上授予,但不会自动授予您将对象放入任何模式的能力。您还 需要对目标架构具有ALTER权限,通常您可以通过成为目标架构的所有者来获得这些权限。
这就是您所需要的:
CREATE ROLE [NewRole]
GO
CREATE SCHEMA [schema1]
GO
ALTER AUTHORIZATION ON SCHEMA::schema1 TO [NewRole]
GO
GRANT CREATE TABLE, CREATE VIEW, CREATE PROCEDURE TO [NewRole]
您实际上永远不需要在模式上授予ALTER。