11

SQL Server 2012 で、1 つのスキーマですべてのストアド プロシージャの実行を許可する方法はありますか? 追加情報として、これらのストアド プロシージャは単に選択を行っています。

4

3 に答える 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 に答える