0

SQL の PrincipalObjectAccess (POA) テーブルの AccessRightsMask 列を使用して、CRM 2011 の特定のエンティティのレコード (行) がいくつ書き込み権限を持っているかを調べる必要があります。

CrmSdk の AccessRights の列挙子では、WriteAccess のマスク値が 2 として指定されていますが、POA テーブルで値 2 を検索すると、この AccessRightsMask 値のレコードが見つかりません。

ユーザーまたはチームがオブジェクトへの書き込みアクセス権を持つ行を返すには、どのクエリを使用する必要がありますか?

4

1 に答える 1

2

プリンシパルが書き込みアクセスしか持たないオブジェクトは、ほとんどの場合、読み取りアクセスが必要になるため、ほとんどの場合、それと他の多くのものを使用する必要があります。あなたはこれをマスクとして扱っていますね?つまり、値= 2ではなく、最後から2番目のビット= 1を探していませんか?クエリは次のようになります。

select foo from <POA table> where AccessRightsMask & 2 =2

そして、POAテーブルは、私が知る限り、通常のセキュリティモデルの範囲外のアクセス権、つまり明示的に共有されたレコード、または子育ての再作成時に権利がカスケードされたアクセス権のみを記録します。「通常の」アクセスは、セキュリティロール、チームメンバーシップ、オブジェクトに関連するプリンシパルのBUなどに応じてオンザフライで計算されます。

「なぜこの情報を入手しようとする必要があるのか​​、そしてなぜこのアプローチをとるのか」という大きな質問をする必要があると感じています。

于 2012-10-04T20:48:17.643 に答える