1

SQL Server 2008の特定のユーザーに対して、テーブルのセットの削除権限を拒否する方法はありますか?ユーザーがデータベース内の一部のテーブルからデータを削除できないようにしたい、特定のテーブルのトリガーの代わりに使用したくない原因私は90のテーブルを持っていますか?

4

1 に答える 1

6

絶対!

DENY DELETE ON (YourTableNameHere) TO YourUserNameHere

詳細については、MSDNBooksOnlineのすばらしいドキュメントを参照してください。

データベース内のすべてのDELETEテーブルに対するアクセス許可を拒否する場合は、次を使用できます。

DENY DELETE TO YourUserNameHere

または、テーブルがスキーマにグループ化されるようにデータベースを構造化した場合は、特定のスキーマからのユーザーを拒否することもできます。

90個のテーブルを個別のスキーマ(または2、3個のスキーマ)にグループ化していない場合、90個のテーブルに一度にアクセス許可を適用する簡単で魔法のような方法はありません。これは、ステートメントごとのすべてのテーブル、特定のスキーマ、または特定のデータベースオブジェクト(テーブルなど)のいずれかです。DENY

更新:いつでもシステムカタログビューを使用してこれらのステートメントを生成しDENY、必要なステートメントを使用できます。

SELECT 
    'DENY DELETE ON ' + t.NAME + ' TO (youruser)'
FROM sys.tables t

これにより、出力として(SQL Server Management Studioなどで)ユーザーからのアクセス許可を拒否するステートメントのリストが生成されDELETEます。それらの行をテキストエディタにコピーし、不要な行を削除します。これで、DENYステートメントの長いリストができました。

于 2012-11-30T10:27:33.470 に答える