-551   auth-id DOES NOT HAVE THE PRIVILEGE TO PERFORM OPERATION operation ON OBJECT object-name

説明

許可 IDauth-id が、オブジェクト object-nameoperation を 実行しようとしましたが、その操作を行う適切な権限を与えられていません。 オブジェクトが読み取り専用ビュー (挿入、削除、または更新のデータ変更操作用の) である場合、 あるいは auth-id がそれ自身の許可 ID 以外の許可 ID を用いて表またはビューを作成しようとした場合にも、 このエラーが起こることがあります。

自分以外の auth-id から表を作成できるのは、 許可 ID が SYSADM、DBADM、または DBCTRL の場合だけです。 自分以外の auth-id からビューを作成できるのは、 許可 ID が SYSADM の場合だけです。

トラステッド・コンテキストを使用している場合は、 トークン auth-id には、許可 ID ではなくロールが戻されることがあります。 ロールが戻されるのは、この状態が検出された際に、 ロールが有効で、許可検査がセッションの許可 ID ではなくロールに対して行われている場合です。 それ以外の場合には、許可 ID が戻されます。ロールは、以下のフォーマットで、単一のトークンとして 戻されます。
  • ROLE: role-name

    許可検査に RACF® アクセス・コントロール・モジュールを使用すると、auth-id が、メッセージ ICH408I で報告される値と異なる場合があります。メッセージ ICH408I で報告される ID は、RACF が特権の検査に使用したユーザー ID です。

既に述べた状況のほかに、このエラーは次の状況で発生する場合があります。

  • operation が GRANT *** の時に、GRANT ステートメントでキーワード ALL が使用されましたが、 認可者 auth-id には、付与する特権がありません。
  • operation が GRANT (表またはビューの特権) の場合、指定された特権をビューまたは補助表に対して付与できません。
  • operation が DROP PACKAGE の場合、object-name は、 コレクション ID、パッケージ名、および整合性トークンから成ります。整合性トークンは、ユーザーがドロップ権限をもっていないパッケージのバージョンを固有に識別します。
  • 変更の始まりoperation が USAGE OF DISTINCT TYPE、USAGE OF USER-DEFINED TYPE、または USAGE OF JAR の場合、object-name は、それぞれ、auth-id が USAGE 特権を持っていない DISTINCT TYPE、USER-DEFINED TYPE、または JAR を示しています。変更の終わり
  • operation が ALTER JAR の場合、auth-id に、JAR object-name のスキーマに 対する ALTERIN 特権がありません。
  • Db2® が参照制約を伴う表を作成または変更する際に、 このエラーが起こる場合は、このエラー・メッセージは、FOREIGN KEY、DROP FOREIGN KEY、DROP PRIMARY KEY、または DROP UNIQUE 操作の実行に必要な ALTER 特権が、ユーザーにないことを示しています。object-name は、CREATE または ALTER TABLE ステートメントの オブジェクト表を識別しているのであり、ユーザーが ALTER 特権を持っていない表を 指しているのではありません。
  • 分散 SQL 要求でこのエラーが起こった場合は、次のいずれかの状態が発生している可能性があります。
    • 要求側 Db2 サイトまたはサービス側 (応答側) Db2 サイトのいずれかで 許可 ID 変換が有効である場合、auth-id は許可 ID に変換されます。 許可 ID の変換に関して詳しくは、「Db2 管理ガイド」の第 3 部 (第 1 巻) を参照してください。
    • SQL ステートメントで別名が使用された場合、 object-name は、解決済みのリモート表名またはビュー名を表します。
  • ルーチンの呼び出し中にこのエラーが発生した場合は、SQL パス内のいずれかの候補ルーチンに対する EXECUTE 特権を許可 ID auth-id が持っていません。 object-name の変数は、SQL パス内の候補ルーチンの名前です。
  • オブジェクトが存在せず、CURRENT RULES 特殊レジスターが STD に設定されています。
  • 許可キャッシュ、ステートメント・キャッシュ、またはその両方が有効になったときに、以下の条件に該当すると、DYNAMICRULES(BIND) オプションでバインドされているパッケージに対して、このエラーが発生する可能性があります。
    • アクセス・コントロール許可出口ルーチンがアクティブである
    • AUTHEXIT_CHECK システム・パラメーターが PRIMARY に設定されている
    • プロセスの許可 ID に必要な特権がない
  • アクセス・コントロール許可出口がアクティブであり、AUTHEXIT_CHECK システム・パラメーターが Db2 に設定されている場合は、許可 ID auth-id 用に ACEE を作成できないときに、このエラーが発生する可能性があります。
  • operation が CREATE VARIABLE または DROP VARIABLE である場合、auth-id には、このアクションを実行するために必要な権限がありません。
  • operation が CREATE で、OR REPLACE 節が指定されており、オブジェクトが既に存在する場合、ステートメントを発行するユーザーは、置換されるオブジェクトの所有者でなければなりません。必要に応じて、セキュリティー管理者 (SECADM 権限を持つ) は、TRANSFER OWNERSHIP ステートメントを使用してオブジェクトの所有権を転送できます。

システムの処置

このステートメントを処理することはできません。

プログラマーの応答

このエラーを訂正するために、次の状態を確認してください。
  • auth-id にその操作を実行する権限がある。
  • object-name が存在する。
  • auth-id が、auth-id と同一でないスキーマ修飾子を持つ表を作成しようとしていない。
  • アクセス・コントロール許可出口を使用する場合は、許可 ID auth-id が RACF に定義されており、操作を実行するために必要な特権が付与されていることを確認してください。

SQLSTATE

42501