首页 文章

GRANT EXECUTE到所有存储过程

提问于
浏览
121

以下命令是否有效地为用户“MyUser”授予了在数据库中执行所有存储过程的权限?

GRANT EXECUTE TO [MyDomain\MyUser]

4 回答

  • 10

    SQL Server 2008及更高版本:

    /* CREATE A NEW ROLE */
    CREATE ROLE db_executor
    
    /* GRANT EXECUTE TO THE ROLE */
    GRANT EXECUTE TO db_executor
    

    仅适用于用户(不是角色):

    USE [DBName]
    GO
    GRANT EXECUTE TO [user]
    
  • 64

    SQL Server 2005引入了grant database execute permissions数据库原理的能力,正如您所描述的:

    GRANT EXECUTE TO [MyDomain\MyUser]
    

    这将在数据库范围内授予权限,该范围隐式包含所有模式中的所有存储过程 . 这意味着您不必为每个存储过程显式授予权限 .

    如果您想要更细粒度,也可以通过granting schema execute permissions进行限制:

    GRANT EXECUTE ON SCHEMA ::dbo TO [MyDomain\MyUser]
    
  • 195

    除了上面的答案,我还想补充一下:


    您可能希望将此权限授予 role ,然后将该角色分配给用户 . 假设您已经创建了一个角色 myAppRights

    CREATE ROLE [myAppRights]
    

    然后你可以通过提供执行权限

    GRANT EXECUTE TO [myAppRights]
    

    那个角色 .


    或者,如果你想这样做 on schema level:

    GRANT EXECUTE ON SCHEMA ::dbo TO [myAppRights]
    

    也适用(在此示例中,角色 myAppRights 将在之后的所有元素元素 dbo 上具有执行权限) .

    这样,您只需要执行一次,并且可以在以后需要更改时轻松地向/从用户分配/撤消所有相关的应用程序权限 - 如果您想要创建更复杂的访问配置文件,这将非常有用 .

    Note: 如果您为模式授予角色,这也会影响您稍后创建的元素 - 这可能是有益的,也可能不是取决于您的预期设计,因此请记住这一点 .

  • -4

    GRANT EXECUTE TO PUBLIC

    这个肯定有帮助

相关问题