授予所有存储过程的执行权限
以下命令是否有效地为用户提供“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尤其有用。