2011-01-02 4 views
0

db_reader権限のみを持つdbユーザーがいます。 (彼はすべてにセレクトしている)。SQL Server:許可なしでGrantを実行する

私は100のストアドプロシージャを持っています。私は彼にDMLではなくSELECT SPのみを実行させたいと思っています。残念ながら、彼にすべてを実行させる - DML(INSERT/UPDATE/DELETE)も実行できます。

周囲に道がありますか?

(私はそれはまた、将来の変化と将来のSPをサポートしたいので、私はすべてのSP上で動作し、彼に特定の機能の特定の補助金を与えたくない)、SQL Serverの

+0

私は-1を得た理由を理解していません。それは正当な問題だと思った。 – Faruz

+0

私もどちらも理解していないので、私はそれをバランスをとるためにupvoted。 – Amy

答えて

0

権限ごとのスキーマを適用することができます。 SELECTプロキシを別のスキーマに入れ、EXEC権限を許可します。

+0

それから、私はSPを手で選ぶ必要があります。将来の発展のための苦痛です。 – Faruz

+0

これはあなたがしなければならないことです。 – Amy

1
  • 使用[YourDBNameHere] GRANTが[上で実行GOデータベース

  • 「選択」が格納 手順のそれぞれに役割を追加するために、以下のコードを使用して役割を作成しますTheSchemaNameHere]。[YourSPNameHere] [YourRoleNameHere]

  • ロールに使用を追加GO TO

+0

それから、私はSPを手で選ぶ必要があります。将来の発展のための苦痛です。 – Faruz

+0

@Faruzあなたはspを一度選択するだけでグループを追加します。グループにユーザーを追加します。ユーザーだけがgrouptsで作業しないでくださいが、あなたはそのことを知っています –

+0

あなたの答えをありがとう。問題は、SPはすべてのビルドを変更し、新しいビルド、更新されたビルド、まれには削除されたビルドもあります。だから、私はこのリストを苦労しているビルドごとに維持する必要があります。 – Faruz

1

何の巧妙な方法はありませんが、「すべてのものから選択する」の削除ユーザー権限、それが(他の回答では)別に他のコメントあたり

  • 許可
  • として痛みだ場合どんなに
  • は、すべてのテーブルにトリガを使用します(他の回答で)
  • 使用スキーマ

DENY or db_denydatareaderはテーブルレベルでは機能しません

ストアドプロシージャは任意のコードを実行できます。選択されたプロシージャまたはDMLプロシージャを区別する方法はありません。