授予所有存储过程的执行权限

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

GRANT EXECUTE TO [MyDomain\MyUser] 

SQL Server 2008及以上版本:

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

对于只是一个用户(而不是一个angular色):

 USE [DBName] GO GRANT EXECUTE TO [user] 

SQL Server 2005引入了将数据库执行权限授予数据库原理的function,正如您所描述的那样:

 GRANT EXECUTE TO [MyDomain\MyUser] 

这将授予数据库作用域的权限,隐含地包含所有模式中的所有存储过程。 这意味着您不必为每个存储过程显式授予权限。

如果您希望更细化,还可以通过授予模式执行权限来进行限制:

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

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

您可能希望将其授予angular色 ,然后将angular色分配给用户。

 CREATE ROLE [myAppRights] GRANT EXECUTE TO [myAppRights] 

这样做。

如果你想在模式层面上做到这一点

 GRANT EXECUTE ON SCHEMA ::dbo TO [myAppRights] 

也可以工作(在这个例子中, myAppRights将在myAppRights的模式dbo所有元素上执行权限)。

这样,您只需执行一次,如果您稍后需要更改,就可以方便地向用户分配/撤销所有相关的应用程序权限 – 如果您想创build更复杂的访问configuration文件,则此function尤其有用。