Sql server 如何管理SQL Server中角色的存储过程权限
我想创建三个SQL Server数据库角色Sql server 如何管理SQL Server中角色的存储过程权限,sql-server,sqlroleprovider,sql-revoke,Sql Server,Sqlroleprovider,Sql Revoke,我想创建三个SQL Server数据库角色 它可以创建、更改和执行数据库中的所有存储过程 它只能执行数据库中的所有存储过程 无法访问数据库中的任何存储过程 我已经创建了角色,但在撤消其权限时遇到了问题 我已经执行了 REVOKE CREATE PROCEDURE TO [ROLE NAME] 撤消创建过程并成功执行该过程的权限 但我在执行此语句时出错: 错误:“ALTER”附近的语法不正确 我对SQL server角色权限非常陌生,因此我的方法可能完全错误 请引导我以正确的方式实现我的目标 感
REVOKE CREATE PROCEDURE TO [ROLE NAME]
撤消创建过程并成功执行该过程的权限
但我在执行此语句时出错:
错误:“ALTER”附近的语法不正确
我对SQL server角色权限非常陌生,因此我的方法可能完全错误
请引导我以正确的方式实现我的目标
感谢文档中的:
权限
需要在数据库和ALTER中具有“创建过程”权限
在其中创建过程的架构上的权限
因此,单独给出CREATE PROCEDURE
将不允许您创建过程。事实上,在架构上授予角色
创建过程权限,而不是更改
将导致以下错误:
指定的架构名称“dbo”不存在,或者您没有使用它的权限
没有ALTER-PROCEDURE
权限,因此角色的成员要能够CREATE
和ALTER
aPROCEDURE
您需要执行以下操作:
GRANT CREATE PROCEDURE TO YourRole;
GRANT ALTER ON SCHEMA::dbo TO YourRole; --Replace with appropriate schema name
然而,这也将使用户能够更改所述模式上的任何过程。Ut还允许角色中的人员更改模式中的其他对象(例如表)
如果您的角色
有权更改
过程,并且您希望删除该过程,则需要运行以下操作:
REVOKE ALTER ON SCHEMA::dbo TO YourRole;
如前所述,这也将取消他们更改所述模式上任何其他对象的能力
请记住,REVOKE
不会DENY
,它只是意味着用户将不再从角色继承该权限。如果用户
拥有来自不同角色的权限
,或者他们自己拥有该权限,他们将能够继续使用该权限。如果您必须阻止用户
执行操作,而不考虑任何其他权限,则他们必须具有拒绝
权限
1) 可以在中创建、更改和执行所有存储过程
数据库
这是db_所有者角色,或数据库的控制权限。任何拥有所有这些权限的人都可以将自己的权限升级到数据库级管理员。所以不要尝试
2) 它只能执行数据库中的所有存储过程
授予[某个角色]执行权限
3) 无法访问数据库中的任何存储过程
除非您授予权限或将其添加到具有权限的角色中,否则用户无法访问任何存储过程。您使用了什么赋予角色
更改存储过程的能力<代码>将ALTER过程授予您的角色
会给你同样的错误。这意味着如果我对SCHEMA::dbo TO[ROLE NAME]执行REVOKE ALTER。那么它将不允许用户修改表、函数、查看任何内容?