SQL Server 2012 で、1 つのスキーマですべてのストアド プロシージャの実行を許可する方法はありますか? 追加情報として、これらのストアド プロシージャは単に選択を行っています。
質問する
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
1 つの schema 内のすべてのストアド プロシージャに対して実行権限を付与するには、@szymon によるクエリで十分です。
以下のクエリは、選択したユーザーにプロシージャの実行権限を付与します。ユーザーがすでに存在する場合。
GRANT EXECUTE ON OBJECT::[スキーマ].[プロシージャ名] TO [ユーザー] AS [スキーマ]; 行く
于 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 に答える