ここには、自分で答えを決定するのに役立つスクリプトがあります。
-- setup
CREATE USER A WITHOUT LOGIN;
ALTER ROLE db_securityadmin ADD MEMBER A;
CREATE USER B WITHOUT LOGIN;
CREATE USER C WITHOUT LOGIN;
CREATE USER D WITHOUT LOGIN;
CREATE TABLE R (rid INT);
EXECUTE AS USER = 'A';
GRANT INSERT ON R TO B WITH GRANT OPTION;
REVERT;
SELECT user_name(grantee_principal_id),
user_name(grantor_principal_id),
permission_name, state_desc
FROM sys.database_permissions
where major_id = object_id('dbo.R');
EXECUTE AS USER = 'B';
GRANT INSERT ON R TO C WITH GRANT OPTION;
REVERT;
SELECT user_name(grantee_principal_id),
user_name(grantor_principal_id),
permission_name, state_desc
FROM sys.database_permissions
where major_id = object_id('dbo.R');
EXECUTE AS USER = 'C';
GRANT INSERT ON R TO D WITH GRANT OPTION;
REVERT;
SELECT user_name(grantee_principal_id),
user_name(grantor_principal_id),
permission_name, state_desc
FROM sys.database_permissions
where major_id = object_id('dbo.R');
EXECUTE AS USER = 'D';
GRANT INSERT ON R TO B WITH GRANT OPTION;
REVERT;
SELECT user_name(grantee_principal_id),
user_name(grantor_principal_id),
permission_name, state_desc
FROM sys.database_permissions
where major_id = object_id('dbo.R');
EXECUTE AS USER = 'B';
REVOKE INSERT ON R FROM C CASCADE;
REVERT;
SELECT user_name(grantee_principal_id),
user_name(grantor_principal_id),
permission_name, state_desc
FROM sys.database_permissions
where major_id = object_id('dbo.R');
-- tear down
DROP TABLE R;
DROP USER D;
DROP USER C;
DROP USER B;
DROP USER A;
一度にすべてを実行しないでください - 各助成金を実行し、その後のようなR
見にどのようなアクセス許可を調べます。プラスとして、あなたは自由に他のシナリオを探るためのツールを手に入れました!
最新の権限の変更が常に優先されます。つまり、あなたが最後にやったことは、現在実装/強制されていることです。したがって、 'D'がRにBを挿入すると、これが現在強制されているものです(' D'に許可がある場合)。 'revoke'コマンドが実行されると、すべての以前の' grant 'が削除され、 'C'はもはやこれらの権限を持ちません。ただし、上記の例では 'insert'パーミッションについてのみ話しています。 'Select'、' delete'、または 'update'パーミッションは、これらの変更によって影響されません。 – Ralph
ところで、私はあなたの質問に投票しませんでした。同時に、私は過去に、SQLコミュニティ内の人々が自らの基準に些細でも珍しいような質問を下す傾向があることに気づいた。私は彼らがはるかに難しい/複雑な質問に慣れていると思っているし、 SQLの数年後にあなたはそれらを理解するかもしれません。しかし、私はSQLコミュニティ内の新規参入者を完全にサポートし、SQLの謎を理解してほしいという要望をサポートしています。だから私の側から*(+ 1)*して質問をやめてください。 – Ralph
@Ralph私のdownvoteは研究の欠如のためです。質問は、OPと他の誰にも良いことであり、彼らはそれを解剖して理解していない細部を引き出すことはしませんでした(そのことについては、何かを理解する意志を示さず、彼らの特定の宿題に対する答え)。 –