SQLサーバーでのデータベースアクセス許可管理の世界に関しては、私は非常に環境に配慮しています。
例を挙げましょう。単純です。
アカウント「admin」がスキーマA、B、Cの所有者であるとします。
完全な権限(更新/削除)が必要な別のアカウント「minion」があります。スキーマA、B、およびCで作成されたオブジェクト(テーブル/ビュー)の/ insert / select / alter)。
これは可能ですか?または、これらのスキーマの下にテーブル/ビューを追加するたびに、grantステートメントを実行する必要がありますか? (私には少しばかげているようです。)
回答
GRANT
できます既存のすべてのおよびそのスキーマに存在するすべてのに有効なスキーマ権限。
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>;
さらに、特定の権限を拒否する場合はそのスキーマ内のオブジェクトで実行できます。
DENY INSERT ON OBJECT::<schema>.<object> TO <user>;
コメント
回答
もう少し簡単にするために、役割を使用して、探している仕事を行うことができます。
割り当てたらロールへのアクセス許可。ユーザーをロールに追加するだけです。この方法では、個々のユーザーのアクセス許可を管理する必要はありません。ユーザーはロールに付与された権限を継承します。
以下は、開始するための例です:
-- Create the database role CREATE ROLE TableSelector AUTHORIZATION [dbo] GO ---- Grant access rights to a specific schema in the database GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON SCHEMA::dbo TO TableSelector GO -- Add an existing user to the new role created EXEC sp_addrolemember "TableSelector", "MyDBUser" GO -- Revoke access rights on a schema from a role DENY ALTER -- you can customize here ... ON SCHEMA::dbo TO TableSelector
.... SCHEMA :: [schema] TO [company-name/joshua.duxbury]