0

これが私のシナリオです...

SQL ロール

  • スタッフ_ユーザー

図式

  • 人々

テーブル

  • 人.人

  • People.PhoneNumbers

ビュー

  • People.vtPersons - vtPersons ビューは、Persons テーブルからデータをフィルター処理し、現在ログインしているユーザーに属するデータのみを表示します。

  • People.vtPhoneNumbers - vtPhoneNumbers ビューは、PhoneNumbers テーブルからデータをフィルター処理し、現在ログインしているユーザーに属するデータのみを表示します。

  • People.vwContactInformation - vwContactInformation の「ビュー」は、vtPersons と vtPhoneNumbers からのデータを組み合わせて、Crystal Report でクエリとして使用できるようにします。

Staff_User ロールには、vwContactInformation ビューに対する「SELECT」権限が付与されています。

オブジェクト vtPhoneNumbers へのアクセス許可が拒否されたことを示すエラーが表示されます。このビューにも「SELECT」権限を付与する必要がありますか? 別の SCHEME での経験から、これを行う必要はなく、すべてがうまく機能しました。しかし今、作成した 2 番目の SCHEME でこのエラーが発生しています。役割にアクセスできるビューから呼び出されるビュー、テーブル、関数などにカスケードする権限を許可する最初のスキームで私が持っているものを誰でも提案できますか?

ありがとう、ジャスティン

4

1 に答える 1

0

SQL Server(すべてのバージョン)を想定

エラーには「拒否されました」と表示されます。権限がないか正しくない場合は、「権限が存在しないか、権限がありません」のように表示されます。これに基づいて、vtPhoneNumbersの権限を確認し、明示的なDENYが設定されているかどうかを確認します。DENYは常に評価され、優先されます。(申し訳ありませんが、BOLで見つかりません)。

なぜ:

所有権チェーン/チェーンの考え方は、すべてのオブジェクトが同じスキーマ(別名所有者)にある場合、参照されるオブジェクトのアクセス許可がチェックされないことを意味します。

この場合、すべてのビューとテーブルが「People」スキーマにあるため、vtPhoneNumbersとvtPersonsのアクセス許可を確認しないでください。

REVOKEは権限を削除することに注意してください(以前はGRANTまたはDENYを使用して設定されていました)。誰かがvtPhoneNumbersの前のGRANTステートメントを削除するためにDENYnotREVOKEを使用した可能性があります

于 2009-06-09T04:48:05.520 に答える