プロシージャに対する権限付与
以下のテーブルで、プロシージャ固有の権限に関連した、さまざまなタイプのユーザー/付与者の権限について説明します。
権限 | 付与先 | 付与者 |
---|---|---|
ALTER PROCEDUREとCREATE PROCEDURE | 暗黙的にユーザーDBCに | ユーザーDBC |
明示的に、他のユーザー、ロール、データベース、またはPUBLICに |
|
|
ALTER EXTERNAL PROCEDUREおよびCREATE EXTERNAL PROCEDURE | 暗黙的にユーザーDBCに | ユーザーDBC |
明示的に他のユーザーに |
|
|
DROP PROCEDURE | 明示的に、すべてのユーザー、ロール、データベース、またはPUBLICに | デフォルト。 |
EXECUTE PROCEDUREまたはEXEC PROCEDURE | 暗黙的にユーザーDBCに | ユーザーDBC |
自動的に、プロシージャの作成者に | 作成者 ユーザーDBCを除いて、所有者はこの権限を暗黙的に持ちません。 プロシージャの直接所有者が作成者とは異なる場合、所有者がこの権限を自動的に受け取ることはありません。 |
|
明示的に、他のユーザー、ロール、データベース、およびPUBLICに |
|
プロシージャ固有の権限の使用上の注意
- CREATE PROCEDUREおよびCREATE EXTERNAL PROCEDUREは、データベース レベルまたはユーザー レベルだけの権限です。
- ALTER PROCEDURE、ALTER EXTERNAL PROCEDURE、DROP PROCEDURE、およびEXECUTE PROCEDUREは、データベース、ユーザー、または指定したプロシージャに対して許可されます。
- オブジェクト タイプのPROCEDUREをプロシージャ名の修飾子として指定した場合は、権限の付与時にDROP PROCEDUREおよびEXECUTE PROCEDUREの短縮形としてDROPおよびEXECUTEを使用できます。
PROCEDUREがオブジェクト名の前に指定されていない場合:
発行されたリクエスト | リクエストの効果 |
---|---|
GRANT EXECUTE | オブジェクトはマクロと想定されます。 その名前で指定されるマクロが存在しない場合は、エラーが返されます。 |
GRANT DROP | エラーが返されます。 |
ALTER EXTERNAL PROCEDUREおよびCREATE EXTERNAL PROCEDURE権限
外部プロシージャには、ALTER EXTERNAL PROCEDUREおよびCREATE EXTERNAL PROCEDURE権限も必要です。ALTER PROCEDURE (外部形式)文を使用するには、ALTER EXTERNAL PROCEDURE権限が必要です。
ALTER PROCEDURE(外部形式)文は、既存の外部プロシージャを再コンパイルするために使用できます。ALTER EXTERNAL PROCEDURE権限の目的は、現行のライブラリが破損した場合、またはシステムが再ロードされた場合に、DBAが実行モードを変更したり既存の外部プロシージャを再コンパイルできるようにすることです。この権限は、DBA以外のユーザーに付与ないでください。
ALTER EXTERNAL PROCEDURE権限を持ったDBAは、ALTER PROCEDURE(外部形式)リクエストを使用して、特定の外部プロシージャの実行モードを変更し、非保護モードで直接実行するか(EXECUTE NOT PROTECTED)、または保護モード内の別のプロセスとして実行できます(EXECUTE PROTECTED)。
ALTER EXTERNAL PROCEDUREは、データベースまたはユーザーの作成時にユーザーに自動的に付与される権限ではありません。代わりに、DBAはこの権限を保持して(初期状態ではユーザーDBCだけがこの権限を暗黙的に保持)、デバッグが完了し実働が保証された外部プロシージャだけに対して、この権限を適正に割り当てます。その結果、EXECUTE PROTECTEDからEXECUTE NOT PROTECTEDに実行モードが変わります。
影響を注意深く検討して、ALTER PROCEDURE (外部形式)文を実行する権限をユーザーに付与する必要があります。検討が十分でない場合、その権限が不正に使用されたときに、システムの整合性が容易に失われてしまうおそれがあります。
ALTER EXTERNAL PROCEDURE権限は、特定の外部プロシージャ、またはデータベースやユーザー全体に付与できます。
<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>の「ALTER PROCEDURE(外部形式)」を参照してください。
CREATE EXTERNAL PROCEDURE権限
ユーザーまたはデータベースの作成時に、システムが自動的にCREATE EXTERNAL PROCEDUR権限を付与することはありません。また、データベースに対してCREATE EXTERNAL PROCEDUREが暗黙的に付与されることもありません(ただし、所有者が自身に対するこの権限をWITH GRANT OPTION付きで明示的に持っている場合は例外です)。
外部プロシージャは、非保護モードで動作中はシステムの一部として動作するのに対して、保護モードの外部プロシージャは、tdatuserという名前の一般ユーザーとして別のプロセスで動作します。
詳しくは、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>の「CREATE PROCEDURE (外部形式)/REPLACE PROCEDURE (外部形式)」を参照してください。
例: CREATE EXTERNAL PROCEDURE権限の付与
次の例は、ユーザーasst_dbaに外部プロシージャを作成する権限を付与します。
GRANT CREATE EXTERNAL PROCEDURE ON DATABASE classify TO asst_dba;