22

私のアプリケーション (C#、ASP.Net) は、DB でデータを挿入、更新、削除し、ストアド プロシージャを実行する必要があります。DBスキーマが変更されないようにする必要があります-テーブルの変更、作成または削除、ストアドプロシージャの変更はありません。

アプリケーション ユーザーに付与する必要があるアクセス許可の組み合わせは何ですか? テーブルのデータを挿入/更新/削除する必要があるため、「選択」だけでは機能しません。

特定のログインの権限とアクセス権を確認するにはどうすればよいですか? ログインの許可とアクセスを許可または拒否するにはどうすればよいですか? 新しいユーザー (ログイン) に 1 つのデータベースのみにアクセスする権限を与える必要があります。

SSMS で SQL Server 2008 R2 を使用します。

4

1 に答える 1

43

これをオブジェクト レベルで本当に制御したい場合は、次のようにします。

GRANT SELECT,UPDATE,INSERT,DELETE ON dbo.table TO user;

スキーマ レベル:

GRANT SELECT,UPDATE,INSERT,DELETE ON SCHEMA::dbo TO user;

ただし、テーブルに対してアドホック DML を許可せず、ストアド プロシージャを介してすべての DML を制御するのが理想的です。その場合、触れるオブジェクトではなく、プロシージャ自体に exec を付与するだけで済みます。

GRANT EXEC ON dbo.procedure TO user;

同様に、特定のスキーマ内のすべてのプロシージャで exec を許可する場合は、次のように言えます。

GRANT EXEC ON SCHEMA::dbo TO user;

1 つの例外は、ストアド プロシージャが動的 SQL を構成する場合です。そのような場合でも、動的 SQL 実行のコンテキストで基になるテーブルにパーミッションを適用する必要があるか、または を使用できる場合がありますEXECUTE AS OWNER

于 2012-06-18T16:34:53.423 に答える