Data Virtualizationで仮想テーブルのビューへのアクセス権をユーザーに付与できない

最終更新: 2025年3月17日
Data Virtualizationで仮想テーブルのビューへのアクセス権をユーザーに付与できない

userBという名前のユーザがData Virtualization エンジニアのロールを持ち、仮想テーブルに基づいてビューを作成します。 ところが、userB はこのビューへのアクセス権限をユーザーに付与できません。

症状

userA という名前のユーザーが VIRTUAL_Aという名前の仮想表を作成します。 userB という名前のユーザーは、テーブル VIRTUAL_A から VIEW_B という名前のビューを作成します。 テーブルVIRTUAL_Aへのアクセス許可は、[Manage access]ページの [All data virtualization users]オプションを使用して、すべてのData Virtualizationユーザーに付与されます。

ユーザー B という名前のユーザーは、ビュー VIEW_BBユーザー C へのアクセス権限を付与しようとしますが、以下の例のようなエラーを受け取ります。

Code 500: SQLExecute: {42501} [IBM][CLI Driver][DB2/LINUXX8664]
SQL0551N The statement failed because the authorization ID does not have the required authorization or privilege to perform the operation.
Authorization ID: "USERB". Operation: "GRANT". Object: "USERB.VIEW_B". SQLSTATE=42501

原因

userB は、ビュー VIEW_B の作成者ですが、userB は、表 VIRTUAL_A に依存するビューへのアクセス権限をユーザーに付与するために必要なアクセス権限を VIRTUAL_A で持っていません。

問題の解決

この問題を解決するには、userA が SQL エディターで以下のステートメントを入力して、表 VIRTUAL_A へのアクセス権限を userB に付与する必要があります。
GRANT SELECT ON TABLE "schema".VIRTUAL_A TO "userB" WITH GRANT OPTION

この回避策は、「すべての Data Virtualization ユーザー」オプションを使用して、ユーザー (この例では userB) に仮想テーブル (この例では VIRTUAL_A) へのアクセス権限が付与されている場合にのみ必要です。