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角色权限非常陌生,因此我的方法可能完全错误 请引导我以正确的方式实现我的目标 感

我想创建三个SQL Server数据库角色

  • 它可以创建、更改和执行数据库中的所有存储过程
  • 它只能执行数据库中的所有存储过程
  • 无法访问数据库中的任何存储过程
  • 我已经创建了角色,但在撤消其权限时遇到了问题

    我已经执行了

    REVOKE CREATE PROCEDURE TO [ROLE NAME]
    
    撤消创建过程并成功执行该过程的权限

    但我在执行此语句时出错:

    错误:“ALTER”附近的语法不正确

    我对SQL server角色权限非常陌生,因此我的方法可能完全错误

    请引导我以正确的方式实现我的目标

    感谢文档中的:

    权限 需要在数据库和ALTER中具有“创建过程”权限 在其中创建过程的架构上的权限

    因此,单独给出
    CREATE PROCEDURE
    将不允许您创建过程。事实上,在架构上授予
    角色
    创建过程权限,而不是
    更改
    将导致以下错误:

    指定的架构名称“dbo”不存在,或者您没有使用它的权限

    没有
    ALTER-PROCEDURE
    权限,因此
    角色的成员要能够
    CREATE
    ALTER
    a
    PROCEDURE
    您需要执行以下操作:

    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。那么它将不允许用户修改表、函数、查看任何内容?