在 SQL Server 2012 中,是否有一种方法可以授予某个模式中所有存储过程的执行权限?需要额外说明的是,这些存储过程只执行 SELECT 操作。
在 SQL Server 2012 中,是否有一种方法可以授予某个模式中所有存储过程的执行权限?需要额外说明的是,这些存储过程只执行 SELECT 操作。
试着这样做。它会创建一个新的角色并授予一个模式的执行权限。
CREATE ROLE db_executor
GRANT EXECUTE ON SCHEMA::schema_name TO db_executor
exec sp_addrolemember 'db_executor', 'Username'
将schema_name
替换为您的模式,将'Username'
替换为您的用户名。
如果要为一个模式中的所有存储过程授权执行权限,则@szymon提供的查询已足够。
以下查询将授予所选用户对该存储过程的执行权限。前提是该用户已存在。
GRANT EXECUTE ON OBJECT::[schema].[procedurename] TO [user] AS [schema]; GO
DECLARE @SchemaName varchar(20)
DECLARE @UserName varchar(20)
SET @SchemaName = 'dbo'
SET @UserName = 'user_name'
select 'GRANT EXECUTE ON OBJECT::' + @SchemaName + '.' + P.name + ' to ' + @UserName
from sys.procedures P
inner join sys.schemas S on P.schema_id = S.schema_id
where S.name = @SchemaName