2
データベースユーザーにストアドプロシージャとストアドプロシージャを実行する権限しか与えない方法を探しています。これは動的な設定にする必要がありますので、ストアドプロシージャや関数を追加するたびに権限が与えられます。ユーザーに対してストアドプロシージャ権限のみを付与する
制約 スキーマまたはストアドプロシージャまたは関数の名前を変更することはできません。
データベースユーザーにストアドプロシージャとストアドプロシージャを実行する権限しか与えない方法を探しています。これは動的な設定にする必要がありますので、ストアドプロシージャや関数を追加するたびに権限が与えられます。ユーザーに対してストアドプロシージャ権限のみを付与する
制約 スキーマまたはストアドプロシージャまたは関数の名前を変更することはできません。
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
しかしこれは管理を悪夢にさせるので、私はその道を行くことはありません。