2011-07-25 14 views
2

データベースユーザーにストアドプロシージャとストアドプロシージャを実行する権限しか与えない方法を探しています。これは動的な設定にする必要がありますので、ストアドプロシージャや関数を追加するたびに権限が与えられます。ユーザーに対してストアドプロシージャ権限のみを付与する

制約 スキーマまたはストアドプロシージャまたは関数の名前を変更することはできません。

答えて

7

SQL Server 2005およびそれ以降では、新しいデータベースロール

CREATE ROLE db_executor 

を作成し、その役割を実行する権限付与することができます - 何も指定せずに。

GRANT EXECUTE TO db_executor 

この役割は現在のデータベース内のすべてのストアド・プロシージャや関数を実行することができます - そしてあまりにも、あなたがデータベースに追加する将来ストアドプロシージャを実行することができるようになります!

だから今ちょうどあなたのユーザーにこの役割を追加し、あなたが行われている:

exec sp_addrolemember @rolename = 'db_executor', @membername = 'your-user-name-here' 

PS:もちろん、あなたも1つだけのユーザーにこの権限を付与することができます:

GRANT EXECUTE TO your-user-name 

しかしこれは管理を悪夢にさせるので、私はその道を行くことはありません。

関連する問題