1000以上のテーブルを持つデータベースがあります。すべてのテーブルの読み取り専用と、2つの特定のテーブルへの書き込みアクセスを許可するロールを作成する必要があります。
私はデータベースロールをいじくり回していましたが、テーブルを追加しようとするたびに、すべて1000を手動で選択する必要がありました...これを行うより良い方法はありますか?
スキーマ(dbo
など)に対する権限を付与すると、そのスキーマ内のすべてのオブジェクトにカスケードされます。個々の例外については、それらを明示的にリストするだけです。
GRANT SELECT ON SCHEMA::dbo TO [role];
GO
GRANT INSERT, UPDATE --, DELETE
ON dbo.table_they_can_write_to TO [role];
DENY SELECT ON dbo.table_they_cannot_read TO [role];
これを試して :
EXEC sp_MSForEachTable 'GRANT INSERT, UPDATE ON ? to [ROLE]'