SQL Server 2012 中是否有一种方法可以授予在一个架构中执行所有存储过程?有关其他信息,这些存储过程只是进行选择。
问问题
36448 次
3 回答
23
尝试类似的东西。它创建一个新角色并向模式授予执行权限。
CREATE ROLE db_executor
GRANT EXECUTE ON SCHEMA::schema_name TO db_executor
exec sp_addrolemember 'db_executor', 'Username'
替换schema_name
为您的架构和'Username'
您的用户。
于 2013-09-24T05:09:57.417 回答
3
要为一个模式中的所有存储过程授予执行权限,@szymon 的查询就足够了。
以下查询将授予所选用户对该过程的执行权限。前提是用户已经存在。
GRANT EXECUTE ON OBJECT::[schema].[procedurename] TO [user] AS [schema]; 去
于 2013-09-24T05:29:07.517 回答
1
我建议您执行 Szymon 建议的操作,因为它是更优雅的解决方案,但您希望避免创建角色,您可以执行这样的查询,将结果复制到单独的查询编辑器中并一次执行所有操作。
这将为您在特定模式中拥有的所有存储过程生成 GRANT EXECUTE 语句
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
于 2013-09-25T12:18:41.030 回答