2013-09-24 10 views

答えて

14

このようなことを試してください。新しいロールを作成し、スキーマに対して実行権限を付与します。

CREATE ROLE db_executor 
GRANT EXECUTE ON SCHEMA::schema_name TO db_executor 
exec sp_addrolemember 'db_executor', 'Username' 

ユーザーにあなたのスキーマと'Username'schema_nameを交換してください。

+0

特定のスキーマにあなたが持っているすべてのストアド・プロシージャのEXECUTEステートメントを生成します。それはすでにのdb_datareaderとしてSQL Serverの役割が存在するにSCHEMA権限を付与することは可能ですか? –

+0

@FatihYarbaşı可能なはずですが、私は組み込みの役割についてはわかりません。私は組み込みのロールを拡張しないようにアドバイスします。独自のカスタムロールを作成する方がよいでしょう。 – Szymon

1

1つのスキーマ内のすべてのストアドプロシージャに対して実行許可を与えるには、 @szymonによるクエリで十分です。

以下のクエリは、選択したユーザーにプロシージャの実行権限を与えます。 ユーザーが既に存在する場合。

GRANT :: [スキーマ]をOBJECT ON をEXECUTE [PROCEDURENAME] [ユーザー] AS [スキーマ] TO。 GO

1

私はあなたがそれをよりエレガントなソリューションだが、それはあなたが、このようにクエリを実行し、別のクエリエディタに結果をコピーして、一度にすべてを実行できる役割を作成しないようにしたいので、のSzymonが提案何をお勧めします。

これは、GRANTは

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 
+0

しかし、新しいストアドプロシージャが作成されるとどうなりますか?私は新しく作成されたストアドプロシージャのexec権限を与える必要があると思いますか? –

関連する問題